枚举特定进程的所有线程列表

来源:互联网 发布:linux df命令详解 编辑:程序博客网 时间:2024/05/29 14:55
#include <stdlib.h>#include <stdio.h>#include <windows.h>#include <tlhelp32.h>BOOL RefreshThreadList(DWORD dwOwnerPID){HANDLE        hThreadSnap = NULL;BOOL          bRet = FALSE;THREADENTRY32 te32 = { 0 };// Take a snapshot of all threads currently in the system. hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);if (hThreadSnap == INVALID_HANDLE_VALUE)return (FALSE);// Fill in the size of the structure before using it. te32.dwSize = sizeof(THREADENTRY32);// Walk the thread snapshot to find all threads of the process. // If the thread belongs to the process, add its information // to the display list.if (Thread32First(hThreadSnap, &te32)){do{if (te32.th32OwnerProcessID == dwOwnerPID){printf("%d   %x\n", te32.th32ThreadID, te32.th32ThreadID);//printf("Owner PID/t%d/n", te32.th32OwnerProcessID);//printf("Delta Priority/t%d/n", te32.tpDeltaPri);//printf("Base Priority/t%d/n", te32.tpBasePri);}} while (Thread32Next(hThreadSnap, &te32));bRet = TRUE;}elsebRet = FALSE;          // could not walk the list of threads // Do not forget to clean up the snapshot object. CloseHandle(hThreadSnap);return (bRet);}int main(int argc, char *argv[]){RefreshThreadList(2652);getchar();return 0;}