如题 跨进程 通过sendmessage 怎么传递字符串?
开始我想到的是 自定义消息类型 + 参数(字符串)就好了
这是msdn 给出的sendmessage的定义
LRESULT SendMessage(
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
完蛋 貌似不行, 因为是跨进程,这样传一个字符串地址的是不行的
那怎么传字符串呢?
后面了解到 WM_COPYDATA ,msdn 的定义
要怎么用呢?
下图代码片段来源于 https://www.cnblogs.com/ein-key5205/p/3597427.html
消息接收方
这样就可以了。
还有了解到 这个WM_COPYDATA 进程间通信,
SendMessage(WM_COPYDATA)底层是通过文件映射(File Mapping)完成的,大概流程是发送方线程根据COPYDATASTRUCT结构体中的传递数据信息,在共享内存中进行数据复制,接收方线程则会到共享内存中读取数据进行处理。
有一点的限制 只能用于 sendmessage , postmessage不可以
因为异步塞入队列后,会使这内容端失效 导致错误,具体我也没看 。