gpt4 book ai didi

c# - Spy++:WM_ACTIVATEAPP 给出了一个不存在的线程 ID,为什么?

转载 作者:行者123 更新时间:2023-11-30 15:31:53 26 4
gpt4 key购买 nike

我正在尝试开发一个可以将另一个应用程序带到前台的应用程序,所以我使用 Spy++ 分析了 Windows Explorer (Alt-Tab) 的行为,对我来说有趣的是哪个应用程序或哪个 threis 实际激活,所以我监控消息 WM_ACTIVATEAPP。

WM_ACTIVATEAPP,当wparam=false时,根据MSDN文档,lparam表示被激活线程的threadid。

这是我的 Spy++ 日志中的一个示例:<00037> 00030DD6 S WM_ACTIVATEAPP fActive:False dwThreadID:000008F0

我的问题是:给定的 dwThreadID 8F0 应该是被激活的应用程序。但是:当我切换到 Spy++ 中的线程 View 并搜索线程 8F0 时,我什么也没找到。该线程似乎根本不存在。那么如何将此线程 ID 转换为进程 ID?

最佳答案

造成这种情况的原因有很多,但最常见的一个是 Spy++ 为您提供机器状态的实时 View 。它会在您启动时制作快照,该快照会很快变得陈旧。像 Spy + Threads 这样刷新窗口是你必须手动完成的事情。使用 Window + Refresh 或按 F5。

虽然这听起来像是一个非常讨厌的缺陷,但实际上是故意的。迭代所有线程和(尤其是)机器上存在的所有窗口是一项非常昂贵的操作。对观察到的内容影响太大的调试工具不是值得信赖的工具。

当您看不到您认为应该放在那里的内容时,请养成按 F5 的习惯。

关于c# - Spy++:WM_ACTIVATEAPP 给出了一个不存在的线程 ID,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com