【发布时间】:2009-05-10 07:55:38
【问题描述】:
我知道某些消息类型直接发送到窗口过程,而其他消息类型则发布到线程的消息队列,但我还没有找到任何方法来确定是否发送或发布消息。
MSDN 有一半的帮助;它解释了what's going on,但它给出的例子可能并不详尽。
是否有明确的已发送消息与已发布消息的列表,或者是否有确定消息类型的方法?
【问题讨论】:
标签: windows winapi capture messages
我知道某些消息类型直接发送到窗口过程,而其他消息类型则发布到线程的消息队列,但我还没有找到任何方法来确定是否发送或发布消息。
MSDN 有一半的帮助;它解释了what's going on,但它给出的例子可能并不详尽。
是否有明确的已发送消息与已发布消息的列表,或者是否有确定消息类型的方法?
【问题讨论】:
标签: windows winapi capture messages
使用InSendMessage 或InSendMessageEx 到determine if you are processing a message that was sent by a call 到SendMessage 函数。
【讨论】:
有些消息既不张贴也不发送。 WM_PAINT、WM_TIMER 和其他一些情况就是如此。当发布消息的队列为空时,GetMessage 会简单地返回它们。
我不确定你想挂什么应用程序,但如果你不得不问这样的问题,那我/我有点害怕。对于开发人员来说,没有什么比花时间在用户报告的崩溃上更令人沮丧的了,只是发现原因是来自其他注入行为不端代码的应用程序。小心行事!
此外,Spy++(Visual Studio 附带的工具)将显示任何给定的实时 Windows 应用程序发布/发送/接收了哪些消息。
【讨论】:
【讨论】: