【发布时间】:2011-08-27 20:24:04
【问题描述】:
我正在用 C++ 构建一个应用程序,它使用 Windows 挂钩来控制第三方程序。我正在制作的程序是一个教程程序,用于展示如何使用这些第三方程序。我可以找到我想要挂钩的第三方程序的进程 ID,然后我可以查询此进程 ID 以找到线程 ID 列表,以用作 Windows API 函数 SetWindowsHookEx 的参数。但是,我担心从正在运行的进程的线程 ID 列表中,我将挂接到一个可能随时完成的线程。理想情况下,我想挂接到运行主 gui 的线程,这很可能是寿命最长的线程之一(即使它不是寿命最长的线程,教程程序也被设计为与 GUI 一起使用,所以它仍然是理想的)。如果第三方应用程序有多个 gui,那么我想找到主 GUI 的线程 ID。
所以我的问题是从查询进程 ID 获得的线程 ID 列表中,有没有办法找到主 GUI id 或另一个合适的线程,该线程将在程序退出之前一直处于活动状态?显然,我选择的线程 ID 需要有一个事件队列,以便我可以挂钩。
【问题讨论】:
标签: c++ windows multithreading winapi