gpt4 book ai didi

c++ 连接到不同的应用程序,如何从进程 ID 中找到线程 ID?

转载 作者:可可西里 更新时间:2023-11-01 13:25:44 24 4
gpt4 key购买 nike

我想给一个应用程序添加一个钩子(Hook)。我正在使用 SetWindowsHookEx,我可以创建一个系统范围的 Hook ,但我想为特定应用程序创建一个 Hook 。我需要有目标应用程序的线程 ID 才能 Hook 它。我知道窗口的标题,我知道 exe 名称,从中我可以获得窗口句柄和进程 ID,但是如何获取线程 ID?我在 c# 中看到了一篇关于如何做的帖子,但我看不到如何在 C++ 中获取线程列表。

HWND windowHandle = FindWindow(NULL, _T("SomeOtherApp"));
DWORD processId = GetWindowThreadProcessId(windowHandle, NULL);
DWORD threadId = ??? // How do I get thread id here?
HHOOK hook = ::SetWindowsHookEx( WH_CBT, HookCBTProc, hInst, threadId);

谢谢,亚历山大。

最佳答案

GetWindowThreadProcessId() 返回线程 ID。您错误地将线程 ID 分配给进程 ID 变量。而是写:

HWND windowHandle = FindWindow(NULL, _T("SomeOtherApp"));
DWORD threadId = GetWindowThreadProcessId(windowHandle, NULL);
HHOOK hook = ::SetWindowsHookEx(WH_CBT, HookCBTProc, hInst, threadId);

关于c++ 连接到不同的应用程序,如何从进程 ID 中找到线程 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922248/

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