以前我们有时候会创建一个隐藏的窗口, 然后让他们和其他窗口进行通信. 确实有这种需求啊. 今天在看某软件的时候发现一个办法. 当然这个办法在MSDN里面 就有的. 只是以前没有用过. 也没听人说起过.

1
CreateWindowExW(0, L"WndClass", L"WndName", 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);

父窗体指定为HWND_MESSAGE常量,它可以收发消息,没z-order,,不可遍历且不无能接收到广播消息仅做简单的消息分发.我们可以在创建窗体时指定其父窗体为HWND_MESSAGE常量也可以将现有窗体通过SetParent将父窗体设为HWND_MESSAGE常量从而达到变成消息窗体的目的.

结论: 消息窗体窗体是不可见,在SPY++窗体中可以找到, 但同步不到也就是说没有被遍历到.发出广播消息(RegisterWindowMessage注册的消息)后没有收到.WM_COPYDATA 消息必须由SendMessage 函数发送(同步方式,系统为了确保数据有效)

以后创建背后通信的窗口就使用这个了!