2015-08-16 7 views
-1

Как проверить, работает ли другой экземпляр?
Также, если он работает, как я могу заставить свой уже открытый экземпляр открыть файл?
Также, если это возможно, я могу заставить его получить фокус? (Мне нужна эта отдельно)
Если другой экземпляр запущен, [установить фокус] и открыть файл на «старом» экземпляре

+0

Пожалуйста, сформулируйте Ваши вопросы. Какой «экземпляр» вы хотите проверить? –

+0

экземпляр программы @CliveDM. Я имею в виду, что если уже запущена моя программа, откройте файл для уже открытого экземпляра (а не нового). – Mitcoc

ответ

1

Как я могу проверить, работает ли другой экземпляр?

Вы можете использовать Process.GetProcesses(), чтобы получить список процессов, выполняющихся на вашем компьютере. И просто сравните с Process.Name. При довольно простом имени вам может потребоваться дополнительная проверка вашего приложения.

Также, если он работает, как я могу заставить свой уже открытый экземпляр к открыть файл?

Если вы хотите общаться между двумя процессами, я бы порекомендовал метод SendMessage. См. here.

Также, если это возможно, я могу заставить его получить фокус? (Мне нужен этот ОТДЕЛЬНО)

Вы можете использовать SetForgoundWindow метод (также требуют P/Invoke). См. here.

+0

Лучшая надежда, что у кого-то еще нет такого же имени процесса. Я видел две совершенно несвязанные программы с таким конфликтом, хотя это более неприятно - программа-нарушитель посылает близкую к другой программе. –

+0

Об использовании 'Process.GetProcesses()' @LorenPechtel имеет право. Теперь о связи между двумя процессами, в статье, которую я связал со мной, говорится, что мне лучше избегать использования метода SendMessage. – Mitcoc

+0

@LorenPechtel Да, потребуется немного проверить, достаточно ли имя процесса. –