代码之家  ›  专栏  ›  技术社区  ›  mj2008

我的应用程序如何找到Windows邮件的发件人?

  •  13
  • mj2008  · 技术社区  · 16 年前

    我有一个应用程序在库中使用键盘挂钩程序。一条消息钩子中的wparam是255,我们认为它是“(reserved/oemclear)”。我想找出这条消息的来源,因为它会导致我的应用程序在库中崩溃,而且考虑到不应该发生这种情况,最好是识别它。我们只有一台电脑会反复收到这条信息,其他电脑根本看不到这条信息。

    那么,有没有一种方法可以跟踪发送到窗口的消息的来源,或者系统上的所有消息?

    4 回复  |  直到 16 年前
        1
  •  5
  •   Ana Betts    16 年前

    没有内置的方法来找出是谁发送了窗口消息,甚至win32k也没有跟踪到这一点;您可以使用内核调试程序和条件断点来找到它。

    但是,我认为你并不真正需要这些信息;你需要让你的应用程序正确处理 任何 发送给它的消息。

        2
  •  1
  •   Aardvark    16 年前

    (我最初建议使用Spy++或WinSpector,但它们不与 发送 消息的。这根本没道理!窗口接收消息,但它们不发送,线程会这样做。我将保留关于使用调试器的建议。)

    有时调试会有所帮助。尝试下载Windows PDB 文件和设置仅在其中一条消息出现时命中的断点。在这一点上查看调用堆栈,通常可以了解事情发生的原因。来自其他进程的已发布消息和消息将影响这种方法。

        3
  •  1
  •   dominique    16 年前

    没有内置的方法来确定是谁发送了窗口消息

    当然有。 但它是高级的win32编程(通过钩住csrss)

        4
  •  -1
  •   Ozzy    16 年前

    我不确定这是否符合您的要求,但可以通过系统内部构件查看流程监视器。

    http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

    它显示了进程中发生的所有事情,所以我假设它也捕获消息。写信的时候网站已经关闭了,所以我无法查看。