2011-10-06 50 views
2

我试图想出一个办法来提高可通过多个应用程序被看作一个公众事件中可以看出SystemEvents。首先想到的是SystemEvents。C#创建一个可以被其他应用程序

有没有一种方法来“定义”新SystemEvent甚至公共事件,不止一个应用程序可以查看和收听。

+0

系统事件是你真正想要的,还是一个可能的想法?进程间通信(IPC)有很多种方法。 –

+0

@DaveHillier:应用程序必须处理事件是否对他们有用。 –

+0

但是你真的需要使用SystemEvent吗? IpcChannel如何,我认为它支持广播。 –

回答

2

你真的需要使用SystemEvent?其他方法如何IPC

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

1

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

1

为SystemEvents底层的管道是被广播到所有顶级窗口Windows消息。消息如WM_SETTINGCHANGED。您也可以广播消息,通过HWND_BROADCAST调用SendMessageTimeout。这有点冒险,你会发送消息给以前从未看过消息号码的程序。至少你需要使用RegisterWindowMessage()来确保你得到一个唯一的消息号码,这个消息号码是你所知道的,并且你希望知道这个通知的进程,并且不要混淆其他消息。

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

相关问题