У меня есть приложение (native C++, Windows), которое нельзя запускать одновременно на одной машине. Поведение, которое я хочу реализовать, следующее: при попытке запустить второй экземпляр приложения первый перестает работать.Убив старый процесс с BroadcastSystemMessage
Для этого я хочу использовать функцию WinApi BroadcastSystemMessage() что-то вроде приведенного ниже примера.
Когда приложение запуска он посылает:
BroadcastSystemMessage(BSF_POSTMESSAGE, &dwRecepients, 0x666, 0, 0);
Но, когда я запускаю мое приложение в режиме отладки, он не ударил
case 0x666:
int iClose = 0 + 1;
break;
, когда я начинаю еще один экземпляр. Другие сообщения упорядочены правильно (WM_KEYDOWN, WM_ACTIVATE и другие).
Что я делаю неправильно?
Это называется отдельным экземпляром приложения, там много примеров, как это сделать, обычно с именованным мьютексом. Например: http://support.microsoft.com/kb/243953 –
Хорошо, но большинство этих примеров sipmply не позволяют запускать другой экземпляр. В моем случае - мне нужно убить старое. Существует вероятность того, что первый застрял в запущенных процессах, поэтому желательно убить старое, а не разрешать запуск нового. –