- 在 WM_SETTEXT 这些消息中,发送的只能是以 0 为结尾的字符串。
szText db 'Text send to other windows',0
- 为了支持在 窗口间 任意的消息拷贝,windows提供了 WM_COPYDATA 消息。
- WM_COPYDATA用一个 COPYDATASTRUCT 结构来描述要拷贝的数据的长度和位置:
- WM_COPYDATA消息:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cb78e62bb839e5d96de0ac7d81cc664a.png)
- COPYDATASTRUCT结构:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fafbcf273b8effe9e82e2af4bad7496b.png)
- 调用方法:
invoke SendMessage, hDestWnd, WM_CIOYDATA, hWnd, addr stCopyData
- Windows内核处理策略:
- Windows接收到 WM_COPYDATA消息后,会根据cbData字段的长度创建一块共享内存,并把lpData所指向的数据宝贝到共享内存中。
- 然后定位该共享内存在目标进程中的地址,并把该地址作为新的禁止添加到 COPYDATASTRUCT结构的lpData字段中,最后将经过处理的该结构 发送给 目标窗口过程。
- 目标窗口过程就可以结构中的字段来定位数据了。
- 目标窗口过程返回后,WIndows释放掉共享内存,SendMessage函数返回。