我有一个应用程序( native C++,Windows)不能在一台机器上同时运行。我想要实现的行为是这样的:在尝试运行应用程序的第二个实例时,第一个停止运行。
为此,我想使用 WinApi 函数 BroadcastSystemMessage(),如下例所示。
当应用程序启动时它发送:
BroadcastSystemMessage(BSF_POSTMESSAGE, &dwRecepients, 0x666, 0, 0);
但是,当我在 Debug模式下运行我的应用程序时,它没有命中
case 0x666:
int iClose = 0 + 1;
break;
当我启动另一个实例时。其他消息已正确处理(WM_KEYDOWN、WM_ACTIVATE 等)。
我做错了什么?
最佳答案
为了广播自定义消息,您需要使用 RegisterWindowMessage 为它创建一个 ID功能,例如:
UINT msg666 = RegisterWindowMessage(L"custom_devil_message");
并在发送和接收代码中使用它:
// sending code
BroadcastSystemMessage(BSF_POSTMESSAGE, &dwRecepients, msg666, 0, 0);
// receiving code
case msg666:
int iClose = 0 + 1;
break;
请记住,消息不适用于控制台应用程序。
关于c++ - 使用 BroadcastSystemMessage 杀死旧进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712571/