2012-09-06 19 views
0

我有一個systemtray應用程序(C#,Windows窗體)。在這個可執行文件旁邊,我還會有另外x個可執行文件(用C#編寫),它們必須以某種方式向系統托盤應用程序發送一條消息(最好以字符串格式)。C#在相同的PC內發送消息/命令

  • 我不想爲此安裝整個Windows服務。
  • 這不是客戶端服務器。這一切都發生在同一臺PC上。使用與套接字相結合的監聽器會很麻煩,甚至可能被它自己的防火牆阻擋,我認爲。
  • 我正在尋找類似於控制檯應用程序的東西,它可以處理主要功能上的參數。只有這個時候已經運行的Windows窗體應用程序。
  • 是否有可能以某種方式在系統托盤應用程序中可以由其他可執行文件調用的全局函數/過程?像「全球無效PerformAction(params在這裏){..}」?這似乎是最好的解決方案,但我不確定.NET 4是否支持這一點。

示例:可執行文件X1.exe向系統托盤應用程序發送消息「執行動作[A]參數[B]」,然後自行終止。系統托盤應用程序將讀取該字符串,然後知道它需要用參數「B」調用函數A.

但是,如何發送/接收消息?

謝謝。

+2

您正在尋找的是通過聽音應用程序(托盤應用程序)託管的命名管道上的wcf服務,我認爲 –

+0

或者,在更具體的上下文中,您可以使用url名字來註冊自己的協議處理程序。 –

回答

1

不訴諸WCF - 你可以使用一個簡單的包裝Named Pipes - 像this一個我發佈作爲對另一個問題的答案。

希望這會有所幫助!

0

本地應用程序有一個非常方便的方法,即窗口消息。隨着一些破解,你也可以在你的.net應用程序中使用它。

我建議你參考

SendMessage函數和SendMessageA API函數。你可能不得不編寫一些不安全的代碼。