在c#接口应用程序之间进行通信并注入另一个进程dll

时间:2011-05-06 19:53:31

标签: c# c++ wpf dll

我的应用程序将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的信息?

1 个答案:

答案 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定位。