Запуск и остановка Firefox от c#

Когда я запускаю

/Applications/Firefox.app/Contents/MacOS/firefox-bin

на Процессе использования MacOSX. Запустите () использование Моно, идентификатор процесса, который возвращается, не соответствует процессу, под которым Firefox заканчивает тем, что работал.

Похоже, что Firefox быстро решает запустить другой процесс и уничтожить текущий.

Это мешает останавливать Firefox и обнаруживать, если он все еще работает. Я попробовал стартовый Firefox с помощью - неудаленный флаг, напрасно.

Существует ли способ запустить Firefox таким способом, которым он не делает этого, "я быстро заставлю новый процесс для Вас" танцевать?

Ситуация может несколько быть обнаружена Firefox проверки, продолжает работать в течение по крайней мере 3 секунд за его запуском, и когда это не делает, сканирование для других процессов Firefox. Однако эта техника шатка в лучшем случае как в медленные дни могло бы потребоваться больше чем 3 секунды и затем все тесты в зависимости от этого сбоя поведения.

Это складывается, что это поведение только происходит при просьбе, чтобы Firefox запустил определенный профиль с помощью-P MyProfile. (Который я должен сделать, поскольку я должен запустить Firefox с определенных proxyserver настроек), Если я запускаю Firefox "обычно", он действительно придерживается своего процесса.

5
задан Lucas Meijer 18 May 2010 в 07:22
поделиться

4 ответа

При программном использовании / встраивании Mozilla в другие приложения вы должны использовать предоставленные компоненты:

«Правильный путь», рекомендованный mozilla .. .

https://developer.mozilla.org/en/XPCOM

«Легкий путь», общее мнение разработчиков Mozilla ...

http://www.iol.ie/~locka /mozilla/control.htm

Необходимо «выполнить процессы», просто создать экземпляр компонента и поговорить с ним, тогда у вас должно быть все, что вам нужно.

Однако ...

Если вы действительно настаиваете на отслеживании фактического процесса для экземпляра firefox, вы можете вызвать

Process.Start ("... \ firefox.exe");

Тогда попробуйте это (я считаю, что это работает и на MAC OS) ...

C # / mono: получить список дочерних процессов в Windows и Linux

Основная идея / шаблон мышления состоит в том, что если он на самом деле сразу выполняет другой процесс, вы сможете найти его, как и «дочерний» «процесс, а не просто один из списка в« списке задач »/ диспетчере процессов для машины.

3
ответ дан 15 December 2019 в 06:24
поделиться

Я предлагаю использовать другой подход: перечислить все запущенные процессы, найти Firefox, получить его идентификатор процесса и (необязательно) посмотреть, является ли он тем, который вы запустили.

Я не уверен, есть ли независимый от платформы способ сделать это. В Linux вы можете вызвать «ps -ef», чтобы перечислить их, в Windows это называется «список задач».

0
ответ дан 15 December 2019 в 06:24
поделиться

В случае, если вас устраивает обнаружение самого процесса Firefox, но вы не знаете, когда следует начать обнаружение, вы можете использовать событие Process.Exited. Не забудьте сначала установить EnableRaisingEvents.

0
ответ дан 15 December 2019 в 06:24
поделиться

У меня нет Mac, поэтому я не могу быть уверен, но если это что-то вроде Linux, двоичный файл firefox на самом деле является сценарием оболочки, который устанавливает кучу необходимых сред переменных и проверяет, запущен ли firefox (если это так, он попытается добавить новую вкладку в существующий экземпляр, насколько мне известно).

Вы можете записать новый PID в скрипте, хотя, если вы обновите его, остерегайтесь его перезаписи во время обновлений.

0
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: