如何为过程互通创建全局窗口?

时间:2019-04-19 17:40:57

标签: c winapi process

我非常喜欢窗口发送/接收消息的方式,并且我想将其重用于进程内部通信-我听说过命名管道,但是我不想写入文件-看起来很丑对我来说并不直观。

那么有可能创建一个具有跨多个进程的可共享句柄的窗口吗?

1 个答案:

答案 0 :(得分:0)

默认情况下共享窗口句柄,就像可以通过FindWindowFindWindowEx找到它们一样。您想要的有点像套接字通信,客户端-服务器-客户端传输协议。只是套接字更加强大,并且可以在不同的机器上使用。

您可以通过定义自己的WM_*消息类型在进程之间进行通信,并且可以控制“多对多”进程间通信。但这在实践中不切实际(如果不考虑丑陋性),它不如套接字强大,不如套接字技术成熟,占用更多资源(由于可见窗口)。

当然,正如@IInspectable所说,message-only windows还有另一种方式。但是窗口是不可见的,这不是“直观的”。获取窗口句柄就像打开文件一样“丑陋”。就像将消息队列封装到一个不可见的窗口中一样。 此外,如果意外关闭了窗口,通讯将失败。

因此,总结:您可以根据自己的喜好使用可见窗口在进程之间进行通信,但是这种方法不切实际(除非有特殊需要)。