如何在进程/应用程序之间传递IntPtr

时间:2016-04-30 09:28:48

标签: c# .net intptr

我有2个申请。 其中一个是WPF应用程序,另一个是sys托盘应用程序。 第一个应该以某种方式将另一个窗口指针传递给IntPtr

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

第二个应该接受它并检测WPF应用程序的活动屏幕。

Screen activeScreen = Screen.FromHandle(thisWindowHandle);

我的问题是我们如何在这些应用之间发送IntPtr,是否有可能完成?

谢谢!

2 个答案:

答案 0 :(得分:1)

可以在同一桌面上的同一会话中运行的进程之间交换窗口句柄。如果您的应用程序是服务,它将无效。

您需要使用标准的.NET进程互操作机制来传递句柄,如WCF,套接字,命名管道,文件或命令行参数。也许你需要的只是Process.MainWindowHandle,所以你根本不需要传递任何东西,这当然是最简单的。

请记住故障模式,WPF应用程序崩溃并且“托盘应用程序”继续运行的情况很少见。在通知区域中显示图标不需要单独的过程。

答案 1 :(得分:0)

您可以将Microsoft Message Queuing用于此目的。

另一种方法是你可以通过它的标题找到你的窗口而不会像提到here那样将IntPtr传递给它。