windows - 在 Windows 中枚举线程

标签 windows multithreading winapi

在给定进程句柄(或进程 ID)的情况下,如何枚举进程中的所有线程?我有兴趣这样做,所以我可以进一步做 EnumThreadWindows在每个线程上。

最佳答案

Enumerating threads in a process在 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;
}

关于windows - 在 Windows 中枚举线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888742/

相关文章:

c# - WinApi - GetLastError 与 Marshal.GetLastWin32Error

c - 用于 C 中的 Windows 的 fnmatch?

java - 如何在 Windows 机器上检查 java 无限强度加密策略

java - wait 和 thread 的确切区别

xcode - swift 错误 : class RecordSoundsViewController has no initializers

c# - 如何以另一个用户(la/netonly)身份启动 Internet Explorer 进程?

c++ - 如何获得给定进程的窗口站?

linux - 线程实现会降低性能

java - 使用 Java 将 WAV 文件读入样本数组时即时转换采样率

java - UI线程和图像处理