通过进程名称得线程id

来源:互联网 发布:手机摄影后期制作软件 编辑:程序博客网 时间:2024/06/04 18:41

BOOL GetThreadIDByProcessID(IN UINT32 ProcessID, OUTvector& ThreadIDVector)
{
HANDLE ThreadSnapshotHandle = INVALID_HANDLE_VALUE;
THREADENTRY32 ThreadEntry32 = { 0 };

ThreadEntry32.dwSize = sizeof(THREADENTRY32);

ThreadSnapshotHandle =CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (ThreadSnapshotHandle == INVALID_HANDLE_VALUE)
{
return FALSE;
}

BOOL bOk = Thread32First(ThreadSnapshotHandle,&ThreadEntry32);

if (bOk)
{
do
{
if (ThreadEntry32.th32OwnerProcessID == ProcessID)
{
ThreadIDVector.emplace_back(ThreadEntry32.th32ThreadID); //把该进程的所有线程id压入模板
}
} while (Thread32Next(ThreadSnapshotHandle,&ThreadEntry32));

}
CloseHandle(ThreadSnapshotHandle);
ThreadSnapshotHandle = INVALID_HANDLE_VALUE;
return TRUE;
}