Как проверить, работает ли другой экземпляр?
Также, если он работает, как я могу заставить свой уже открытый экземпляр открыть файл?
Также, если это возможно, я могу заставить его получить фокус? (Мне нужна эта отдельно)
Если другой экземпляр запущен, [установить фокус] и открыть файл на «старом» экземпляре
ответ
Как я могу проверить, работает ли другой экземпляр?
Вы можете использовать Process.GetProcesses()
, чтобы получить список процессов, выполняющихся на вашем компьютере. И просто сравните с Process.Name
. При довольно простом имени вам может потребоваться дополнительная проверка вашего приложения.
Также, если он работает, как я могу заставить свой уже открытый экземпляр к открыть файл?
Если вы хотите общаться между двумя процессами, я бы порекомендовал метод SendMessage
. См. here.
Также, если это возможно, я могу заставить его получить фокус? (Мне нужен этот ОТДЕЛЬНО)
Вы можете использовать SetForgoundWindow
метод (также требуют P/Invoke
). См. here.
Лучшая надежда, что у кого-то еще нет такого же имени процесса. Я видел две совершенно несвязанные программы с таким конфликтом, хотя это более неприятно - программа-нарушитель посылает близкую к другой программе. –
Об использовании 'Process.GetProcesses()' @LorenPechtel имеет право. Теперь о связи между двумя процессами, в статье, которую я связал со мной, говорится, что мне лучше избегать использования метода SendMessage. – Mitcoc
@LorenPechtel Да, потребуется немного проверить, достаточно ли имя процесса. –
Пожалуйста, сформулируйте Ваши вопросы. Какой «экземпляр» вы хотите проверить? –
экземпляр программы @CliveDM. Я имею в виду, что если уже запущена моя программа, откройте файл для уже открытого экземпляра (а не нового). – Mitcoc