Какой лучший способ остановить несколько экземпляров запускаемого приложения Windows? - PullRequest
0 голосов
/ 10 июня 2010

Многие приложения Windows (например, Skype или MSN) не позволяют запускать несколько экземпляров, а пытаются запустить его во второй раз, просто оставляя существующую версию запущенной.

Обычно это делается в некоторыхпростой способ - ярлык в меню «Пуск» - это приложение-обертка для основного приложения - или есть какие-то приемы, которые вы можете использовать для делегирования проблемы самой Windows?) но рады услышать более общие решения, если они работают в Windows XP или более поздней версии.

РЕДАКТИРОВАТЬ: этот кажется лучшим дубликатом.

Ответы [ 3 ]

0 голосов
/ 10 июня 2010
  1. Именованный Mutex или аналогичный именованный объект, зависящий от ОС.Если он существует - приложение работает.
  2. Блокировка файла где-нибудь (во временном каталоге и т. Д. - создайте его при запуске программы, удалите при завершении программы).Программное обеспечение Linux часто работает таким образом (некоторые программы хранят PID в файле блокировки), но это небезопасно - если вы внезапно потеряете питание (отключение электричества), возможно, файл блокировки не будет удален.
  3. И вы всегда можете перечислить все запущенные процессы и попытаться найти себя.

Могло бы быть больше способов сделать это, но это первые, о которых я мог подумать.

0 голосов
/ 10 июня 2010

Я просто проверяю, запущен ли процесс: если он не запускается, если он уже запущен, выведите окно на передний план Проверка выполняется методом Main.

Я получаю имя процесса с помощью System.Diagnostics.Process.GetCurrentProcess().ProcessName и проверяю, запущен ли он уже System.Diagnostics.Process.GetProcessesByName(). Если имеется более 1 процесса, сначала сфокусируйтесь на первом из них, а затем завершите работу.

0 голосов
/ 10 июня 2010

Насколько я помню, существуют общесистемные мьютексы.Установите Mutex при первом запуске, если при запуске уже установлено, немедленно выйдите из системы.

Используйте CreateMutex (), чтобы вызвать трюк перед именем с «Global \».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...