我有2个申请。
其中一个是WPF应用程序,另一个是sys托盘应用程序。
第一个应该以某种方式将另一个窗口指针传递给IntPtr
IntPtr thisWindowHandle = (new WindowInteropHelper(this)).Handle;
第二个应该接受它并检测WPF应用程序的活动屏幕。
Screen activeScreen = Screen.FromHandle(thisWindowHandle);
我的问题是我们如何在这些应用之间发送IntPtr
,是否有可能完成?
谢谢!
答案 0 :(得分:1)
可以在同一桌面上的同一会话中运行的进程之间交换窗口句柄。如果您的应用程序是服务,它将无效。
您需要使用标准的.NET进程互操作机制来传递句柄,如WCF,套接字,命名管道,文件或命令行参数。也许你需要的只是Process.MainWindowHandle,所以你根本不需要传递任何东西,这当然是最简单的。
请记住故障模式,WPF应用程序崩溃并且“托盘应用程序”继续运行的情况很少见。在通知区域中显示图标不需要单独的过程。
答案 1 :(得分:0)
您可以将Microsoft Message Queuing用于此目的。
另一种方法是你可以通过它的标题找到你的窗口而不会像提到here那样将IntPtr传递给它。