SendMessage 和 SendMessageTimeout 除了超时外可能存在异常,前段时间与第三方合作时,发现其用 SendMessageTimeout 发送的信息在我的程序中,PreTranslateMessage 无法收到。以前偶写过如下链接的文章,发现与现在的可能存在不一致。当然,以前未试过 SendMessageTimeout。
SendMessage() 发出的消息 PreTranslateMessage() 不一定能接收到!
在 XX 项目时,与 YY 管理程序配合,YY 管理程序是一个单独的 EXE 文件。
由一个 MFC 程序在窗体初始化时使用函数 CreateProcess() 来运行 YY 管理程序。
YY 管理程序发送消息的方式是调用函数:SendMessageTimeout()。
此 MFC 程序负责接收无线管理程序返回的消息。发现 YY 管理程序发送的消息无法在 PreTranslateMessage() 中被接收到。
在窗体的消息映射机制中,可以接收到其发送的消息。
按以前的理解,只要不是发送到本窗体的消息,PreTranslateMessage() 都应该可以处理到。
显然 YY 管理程序与此 MFC 程序是不同两个进程,在 MFC 程序的 PreTranslateMessage() 应该可以接收到 YY 管理程序发送的消息。
但以上事实说明不是这样的!