是否有可能跟踪进程之间的PostMessage?

我们有一个系统,通常有两个进程在同一个系统上运行。 一个进程处理的GUI和其他运行像服务(虽然由于历史原因,这不是一个服务,只是一个exe没有可见的窗口)。

这两个进程主要通过注册消息asynchronous进行IPC – 即我们在两个进程中使用RegisterWindowMessage()来定义一组大量消息,这些消息有效地形成了API到服务器进程。

我编写了一个“免提”监视应用程序,使用SetWindowsHookEx()来监视和显示两个进程的消息队列,并提供API的使用方式以及如何将通知传播到GUI进程的某种级别的解码(每个窗口可以直接订阅来自服务器的通知)。

所以,在两个方向都有大量的消息,所以我有过滤和总结计数等,所以我可以专注于特定的活动。 所有这些都可以在不影响实时代码的情况下完成,这很好。

这一切运行良好,但是现在能够“标记”源自GUI的消息是非常有用的,所以我可以在服务器处理它时跟踪相同的消息。 这对于debugging和诊断系统问题将是非常有用的,但是我不能find一个干净的方式(实际上我找不到任何方法!),而不用为我们的注册消息API添加这样的支持,这将是很多而且涉及到的风险远远超过了我现在所熟悉的风险。 由于服务器预先处理了一些消息,然后执行PostMessage()来执行操作,所以原始消息可能会“丢失”,这变得更加复杂了。

有没有人在这里解决这类问题? 如果是这样,你可以给我一些指针? 如果没有,那么是否有任何logging或没有logging的方法来将一小块数据添加到Windows消息并稍后检索? 我看了SetMessageExtraInfo()但似乎是每队列,而不是每个消息。

Solutions Collecting From Web of "是否有可能跟踪进程之间的PostMessage?"