2016-04-30 64 views
1

我有2個應用程序。 其中之一是WPF應用程序,另一個是系統托盤應用程序。 第一個應該以某種方式傳遞到另外一個他的窗口指針IntPtr如何在進程/應用程序之間傳遞IntPtr

IntPtr thisWindowHandle = (new WindowInteropHelper(this)).Handle; 

,第二個應該接受它,並檢測WPF應用程序的活動畫面。

Screen activeScreen = Screen.FromHandle(thisWindowHandle); 

我的問題是我們如何能夠把那些應用程序之間IntPtr並有可能在所有嗎?

謝謝!

回答

1

有可能,窗口句柄可以在同一桌面上同一會話中運行的進程之間交換。如果您的應用程序是服務,則無法正常工作。

您需要使用標準的.NET進程互操作機制來傳遞句柄,例如WCF,套接字,命名管道,文件或命令行參數。也許你需要的只是Process.MainWindowHandle,所以你根本不需要傳遞任何東西,這當然是最簡單的。

請記住失敗模式,您的WPF應用程序崩潰並且您的「托盤應用程序」繼續運行的情況很少結果。在通知區域顯示圖標不需要單獨的過程。

0

您可以使用Microsoft Message Queuing來達到此目的。

另一種方法是,您可以通過它的標題找到您的窗口,而無需像上面提到的here那樣將IntPtr傳遞給它。

相關問題