正在发送转发窗口消息

Sending forward windows message

本文关键字:窗口 消息 转发      更新时间:2023-10-16

例如,我刚刚调用了GetMessage(或者我在CallWndMsg钩子回调中),并获得了lParam和wParam。

可以使用SendMessage或PostMessage将此消息重新发送到其他进程的窗口,使用刚刚收到的lParam和wPAram,而无需深度应对。我的意思是,如果这些参数(通常包含计算结构的指针)在重新发送期间仍然有效,或者我可能面临内存冲突问题(或类似问题)?如果我能做到,系统如何决定何时可以发布和删除lPAram和wPAram?

PS似乎我不能对WM_COPYDATA这样做,因为msdn指出,所有传递的数据只有在消息处理程序工作时才是活动的/但其他消息呢。

您不应该将指针从进程A传递到进程B,在进程B中,这样的指针(地址)可能指向释放的内存或其他结构使用的内存。WM_COPYDATA是在进程之间传递数据的一种方法,您实际上可以将每个消息打包到二进制数组中,使用WM_COPYDATA将其发送到其他进程,然后在第二个进程中对其进行解包,然后将解包后的消息发送给它自己。

在进程之间传递lParam和wPAram的唯一安全方法是当它们只包含DWORD数据时。