#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;
}
else
bRet = 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;
}