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

Communicate between c# interface application and injected to another process dll

本文关键字:注入 另一个 dll 进程 通信 接口 应用程序 之间      更新时间:2023-10-16

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

WPF 处理消息和处理方式与您习惯的方式略有不同。阅读本文以了解什么是可能的,什么是不可能的。

本文的一个重要部分:

屏幕上的所有 WPF 元素最终都由 HWND 提供支持。创建 WPF 窗口时,WPF 会创建一个顶级 HWND,并使用 HwndSource 将窗口及其 WPF 内容放在 HWND 中。应用程序中的其余 WPF 内容共享该单数 HWND。菜单、组合框下拉列表和其他弹出窗口除外。这些元素创建自己的顶级窗口,这就是为什么 WPF 菜单可能会越过包含它的窗口 HWND 的边缘的原因。当您使用 HwndHost 将 HWND 放入 WPF 中时,WPF 会通知 Win32 如何相对于 WPF 窗口 HWND 定位新的子 HWND。