如何调试队列上的消息,谁发送它们?什么在队列中?

时间:2015-12-07 10:43:19

标签: winapi

事件队列是一个获取消息并处理它们的框。

请问,PostMessage和SendMessage存储的消息在哪里?以及如何告诉谁发送什么消息? 可以检查哪些变量来获取信息?

1 个答案:

答案 0 :(得分:2)

  

邮件存储在哪里?

它们存储在与线程关联的内部数据结构中。请注意,每个线程都有零个或一个消息队列。不会为线程自动创建消息队列,而是在线程调用需要消息队列的函数时按需创建消息队列。

另请注意,SendMessage发送的已发送邮件不会显示在队列中。已发送的邮件是同步的,因此不会排队。

  

如何判断谁发送了什么消息?

一般来说,这是不可能的:Can I determine which process sent my window a message?

  

可以检查哪些变量来获取信息?

你做不到。您可以使用PeekMessage来查明队列是否包含特定消息,或查找给定范围内的第一条消息。但是没有转储整个消息队列的功能。