在Windows中枚举线程

如何枚举进程中的所有线程(或进程ID)? 我对这样做感兴趣,所以我可以进一步在每个线程上做一个EnumThreadWindows

在MSDN博客上枚举进程中的线程

从那里的代码片段:

#include <stdio.h> #include <windows.h> #include <tlhelp32.h> int __cdecl main(int argc, char **argv) { HANDLE h = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (h != INVALID_HANDLE_VALUE) { THREADENTRY32 te; te.dwSize = sizeof(te); if (Thread32First(h, &te)) { do { if (te.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) + sizeof(te.th32OwnerProcessID)) { printf("Process 0x%04x Thread 0x%04x\n", te.th32OwnerProcessID, te.th32ThreadID); } te.dwSize = sizeof(te); } while (Thread32Next(h, &te)); } CloseHandle(h); } return 0; } 

ToolHelp库为快照过程提供了一个API,并枚举了它们的线程(以及其他属性)。 详情请参阅MSDN 。