连续在两个公司使用WM_COPYDATA实现进程间通信了,整理一下
具体步骤:
一. 进程A通过ShellExecute启动进程B, 将用于通信的窗口句柄hWndA(已强转为int值)通过命令行参数传递给进程B, B保存hWndA.
二. 进程B组装消息COPYDATASTRUCT copyData, 将自己用于通信的窗口句柄hWndB包含在其中,发送WM_COPYDATA消息给hWndA:
SendMessage(hWndA, WM_COPYDATA, 0, (LPARAM)©Data);
进程A收到WM_COPYDATA消息时,将hWndB存储. 进程A需要发消息给进程B时, 也使用该模式:
SendMessage(hWndB, WM_COPYDATA, 0, (LPARAM)©Data);
进程通信通路完成.
COPYDATASTRUCT 中的dwData中用于存放消息类型.
注意: 接收到WM_COPYDATA时, 给自己Post一个自定义的消息号, 立马返回, 然后根据自定义的消息号进行其他操作.