Win32:如何在C++中枚举属于进程的所有线程

Win32: How do I enumerate all the threads belonging to a process in C++?

本文关键字:进程 属于 线程 枚举 C++ Win32      更新时间:2023-10-16

可能的重复项:
枚举窗口中的线程

我正在尝试枚举属于 Win32 窗口进程的所有线程。

我知道我可以像这样获取进程 ID:

PDWORD procId;
GetWindowThreadProcessId(hwnd, procId);

我知道整个事情可以用 C# 完成,如下所示:

// get process that owns the taskbar window
int procId;
GetWindowThreadProcessId(hwnd, out procId);
Process p = Process.GetProcessById(procId);
if (p != null)
{
    foreach (ProcessThread t in p.Threads)
    {
        ...
    }
}

但据我所知,Process 类是一个 .NET 类(如果我错了,请纠正我(,我正在尽最大努力避免 .NET 依赖项。(阅读:请不要告诉我只使用 .NET。

所以问题是:鉴于我已经正确检索了 PID,是否有 Win32 等效项?

(作为旁注,我看到另一个问题中引用了工具帮助库,但不确定它是最佳选择。如果是,您能否简要解释/演示我将如何实现这一目标或将我引导到其他人的?

与往常一样,非常感谢所有的帮助。

请参阅在 Windows 中线程行走和枚举线程