2

我试图想出一种方法来引发多个应用程序可以看到的公共事件。首先想到的是 SystemEvents。

有没有办法“定义”一个新的 SystemEvent 甚至是多个应用程序可以看到和监听的公共事件。

4

3 回答 3

2

你真的需要使用 SystemEvent 吗?IPC的其他方法怎么样

IpcChannel是一种似乎符合您要求的替代技术。

于 2011-10-06T23:09:25.227 回答
1

SystemEvents 的底层管道是广播到所有顶级窗口的 Windows 消息。WM_SETTINGCHANGED 之类的消息。您也可以广播消息,使用 HWND_BROADCAST 调用 SendMessageTimeout。这有点冒险,您将向以前从未见过消息编号的程序发送消息。至少您需要使用 RegisterWindowMessage() 来确保您获得一个唯一的消息编号,该编号为您和您想要了解通知的进程所知,并且不会混淆其余的消息。

有更可靠、风险更小的机制,例如命名管道服务器。

于 2011-10-06T23:09:50.587 回答
1

我认为没有一种简单的.Net 内置方法可以做到这一点。我知道的唯一方法是使用PostMessageWindowsSendMessage事件队列。您可以阅读关于消息和消息队列的详细信息。在 google 上调用这些本机命令有大量资源,但最好的开始之一是pinvoke.net

于 2011-10-06T22:50:50.177 回答