2011-10-06 58 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()來確保你得到一個唯一的消息號碼,這個消息號碼是你所知道的,並且你希望知道這個通知的進程,並且不要混淆其他消息。

有風險較小,例如命名管道服務器更加可靠的機制。

相關問題