我的应用程序将dll(使用c ++编写)注入另一个进程并将一些信息发送到接口表单。接口是使用MFC制作的。注入的代码通过发送消息WM_COPYDATA与接口通信,如下所示:
::SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM) &cd);
和接口表单有接收消息的方法:
BOOL CInterfaceDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
我将使用WPF创建界面表单。 我如何在WPF界面之间进行通信并注入另一个进程dll? 一些信息,应该从dll发送到接口,我将存储在xml文件中。但是我应该如何向接口发出信号以接收来自xml的信息?
答案 0 :(得分:1)
WPF处理的消息和处理方式与您习惯的有所不同。 Read this article了解什么是可能的,什么是不可能的。
本文的重要部分:
屏幕上的所有WPF元素最终都由HWND支持。创建WPF窗口时,WPF会创建一个顶级HWND,并使用HwndSource将Window及其WPF内容放入HWND中。应用程序中的其余WPF内容共享该单个HWND。菜单,组合框下拉菜单和其他弹出窗口是一个例外。这些元素创建了自己的顶级窗口,这就是为什么WPF菜单可能会越过包含它的窗口HWND的边缘。当您使用HwndHost将HWND放入WPF时,WPF会通知Win32如何将新子HWND相对于WPF窗口HWND定位。