c#创建其他应用程序可以看到的系统事件

本文关键字:系统 事件 创建 其他 应用程序 | 更新日期: 2023-09-27 18:10:42

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

是否有一种方法来"定义"一个新的SystemEvent或甚至一个公共事件,多个应用程序可以看到和侦听

c#创建其他应用程序可以看到的系统事件

你真的需要使用SystemEvent吗?IPC的其他方法呢

IpcChannel是另一种技术,似乎符合您的要求。

我不认为有一个简单的。net内置的方法来做到这一点。我所知道的唯一方法是使用PostMessageSendMessage到Windows事件队列。您可以阅读关于消息和消息队列的详细信息。在谷歌上有大量的资源可以调用这些本地命令,但最好的一个开始是pinvoke.net。

SystemEvents的底层管道是广播到所有顶层窗口的Windows消息。像WM_SETTINGCHANGED这样的消息。你也可以广播消息,用HWND_BROADCAST调用SendMessageTimeout。这有一定的风险,您将向以前从未见过消息号的程序发送消息。至少你需要使用RegisterWindowMessage()来确保你得到一个唯一的消息号,你和进程都知道这个消息号,你想知道这个通知,而不会混淆其他进程。

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