我知道,一些消息类型被直接发送到窗口过程,而另一些则发布到线程的消息队列,但我没有发现任何方式,以确定是否将消息发出,或张贴。

MSDN是半有用;它解释这是怎么回事但它给人的例子大概是不是穷举的。

是否有与发送的发布的消息的定义列表,或一种方法来决定一个消息是类型?

有帮助吗?

解决方案

和一些消息既不张贴也不发送。这就是WM_PAINT,WM_TIMER和其他几个人的情况下。它们被简单地通过的GetMessage返回时张贴的消息的队列是空的。

我不知道你想什么挂钩的应用程序,但如果你要问这样的问题,那么I / M有点害怕。没有比这更令人沮丧的开发者花费超过用户报告的崩溃时候才发现,原因是从被注射行为不当的代码一些其他的应用程序。谨慎行事!

此外,间谍++(工具附带与Visual Studio)会告诉你哪些消息发布/发送/ recevied对于任何给定的实时Windows应用程序。

其他提示

使用InSendMessageInSendMessageEx确定是否正在处理这是通过调用发送到SendMessage功能的消息。

在MSDN页记载每个消息应考虑的权威来源为这样:

  

WM_LBUTTONDOWN消息的公布时.. 。

     

WM_SETFOCUS消息的发送以一个窗之后...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top