MFC 和 WPF 之间的进程间通信

Posted

技术标签:

【中文标题】MFC 和 WPF 之间的进程间通信【英文标题】:Interprocess communication between MFC and WPF 【发布时间】:2016-08-17 13:05:38 【问题描述】:

我正在尝试在 mfc 应用程序和 wpf 应用程序之间建立双向通信。我从这两篇文章中得到帮助: Interprocess Communication Between .NET and MFC Using WM_COPYDATA 和 Interprocess Communication Between .NET and MFC Using C# and COPYDATA

到目前为止,我已经设法将消息从 wpf 发送到 mfc。但现在我希望 mfc 应用程序将消息发送到 wpf 应用程序。我需要做什么才能实现这一目标?

在 mfc 方面,我将句柄存储为

storedHandle = (HWND)intPtr;

之后使用这个句柄来发送消息,内容如下:

::SendMessage(pFrame->storedHandle, WM_COPYDATA, 0, 0);

但是 wpf 没有收到消息。

【问题讨论】:

显示您正在使用的实际代码。不要只放链接。一个问题可能是您将数据从 32 位程序发送到 64 位程序 有多种方法可以实现interprocess communication。使用管道可能更合适。 【参考方案1】:

您应该考虑使用更现代的机制,例如 Windows Mailslots,而不是使用传统的基于窗口的通信:

对于 C#,这里有一个包装器: http://www.codeproject.com/Articles/623268/Csharp-wrapper-for-Mailslots

消息也可以使用\\.\mailslot通过文件系统访问:

https://blog.didierstevens.com/2006/07/13/do-you-have-mailslots-on-your-windows-pc/

【讨论】:

以上是关于MFC 和 WPF 之间的进程间通信的主要内容,如果未能解决你的问题,请参考以下文章

MFC sendmessage实现进程间通信

wpf winform进程间通信的方式

进程间通信:MFC 服务器、.NET C# 客户端

进程间的通信-队列/管道以及进程间的数据共享和进程池

进程间通信的信号

Unix进程小结进程间通信方式总结