我有一个需要与另一个应用程序交互的 WPF 应用程序。
此应用程序有大约 20 条自定义 Windows 消息 (WM_USER+50...WM_USER+70)。
我要完成的工作总结:
WPF 应用程序 -> SendMessage -> 第三方应用程序
我遇到的问题是所有消息都是自定义消息。因此,我必须实现自己的数据封送处理。
请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx
看来我需要经历的过程是:
抓住进程并将其打开以供所有访问。User32.GetWindowThreadProcessId(windowHandle, out pId);
// 以所有访问权限打开进程
someprocess = OpenProcess((0x1F0FFF), false, (int)pId);在进程中分配一个缓冲区: IntPtr buffer = VirtualAllocEx( hProcess, IntPtr.Zero, 1024, 0x1000, 0x04 );
填充某种将写入 #2 中创建的缓冲区的结构?
复制#3 到远程缓冲区是#2?写进程内存??
发送自定义消息( SendMessage(windowhandle, customMsg, 0, buffer from #2?)
将结构从远程进程缓冲区读回本地缓冲区
将此数据编组为托管类型。(这是一个 C# .Net 应用程序)
我真的可以使用一些洞察力。到目前为止,我还没有多少运气。我认为我最坚持的部分是发送到 WriteProcessMemory 的结构类型是什么?