如何log/monitor选中WM_USER+nWindows条消息?

How to log/monitor selected WM_USER+n Windows messages?

我的代码中的一些对话框和数据模块需要延迟执行并通过调用 PostMessage() 来实现。这 不是 跨模块,即数据模块将具有在那里发布的 PostMessage 的处理程序,对话框也是如此。

不同模块中的代码之间存在(当然?)交互。

我想跟踪程序运行时某些特定消息的处理顺序。

(如何)我可以在 Delphi XE2 中执行此操作?

一切都在主 UI 线程中运行。


补充说明:

最简洁的方法是记录消息。日志记录允许您检查程序的操作,而不会像使用交互式调试断点那样干扰它。而对于消息处理,正如您所发现的,断点的干扰使得理解流程变得相当困难。

由于您要发布消息,因此它们由线程的消息队列处理。假设有问题的线程是 UI 主线程,那么您可以使用 Application.OnMessage 作为钩子来执行日志记录。 VCL 消息循环处理的所有排队消息都会通过此事件。通常最好使用 TApplicationEvents 实例来处理 Application 事件。