我正在尝试想出一种方法来引发一个可以被多个应用程序看到的公共事件。首先想到的是SystemEvents。
有没有办法“定义”一个新的SystemEvent,甚至是一个多个应用程序可以看到和监听的公共事件。
发布于 2011-10-07 07:09:25
你真的需要使用SystemEvent吗?IPC的其他方法呢?
IpcChannel是一种似乎适合您的需求的替代技术。
发布于 2011-10-07 06:50:50
我不认为有一个简单的.Net内置的方式来做到这一点。据我所知,唯一的方法就是对Windows事件队列使用PostMessage或SendMessage。您可以阅读详细信息About Messages and Message Queues。在谷歌上有大量的资源可以调用这些原生命令,但最好的入门级资源是pinvoke.net。
发布于 2011-10-07 07:09:51
SystemEvents的底层管道是广播到所有顶级窗口的windows消息。像WM_SETTINGCHANGED这样的消息。您也可以广播消息,使用HWND_BROADCAST调用SendMessageTimeout。这有一定的风险,您将向以前从未见过消息编号的程序发送消息。至少,您需要使用RegisterWindowMessage()来确保获得一个惟一的消息编号,该编号对于您和您希望知道通知的进程来说是已知的,并且不会混淆其他进程。
有更可靠的机制,但风险更小,例如命名管道服务器。
https://stackoverflow.com/questions/7681236
复制相似问题