您的位置:首页 > 其它

VC获取进程的所有线程

2014-01-07 18:53 239 查看
#include <Windows.h>
#include <iostream>
#include "tlhelp32.h"
#include "stdio.h"
#include <map>
#include <stack>

using namespace std;
//1.
stack<DWORD> threadIdStack;
UINT SubThread(LPVOID lParam)
{
while (1)
{
cout<<"fuck"<<endl;
}
return 0;
}
int GetProcessThreadList() //进程的ID
{
DWORD th32ProcessID=GetCurrentProcessId();
HANDLE hThreadSnap;
THREADENTRY32 th32;
hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID);
if (hThreadSnap == INVALID_HANDLE_VALUE)
{
return -1;
}
th32.dwSize = sizeof(THREADENTRY32);
if (!Thread32First(hThreadSnap, &th32))
{
CloseHandle(hThreadSnap);
return -1;
}
do
{
if (th32.th32OwnerProcessID == th32ProcessID)
{
threadIdStack.push(th32.th32ThreadID);
}
}while(Thread32Next(hThreadSnap, &th32));

CloseHandle(hThreadSnap);
return threadIdStack.size();
}
HANDLE GetTheNewThreadHandle(int size_after,int size_before)
{
if (1!=size_after-size_before)
{
threadIdStack.empty();
return NULL;
}
DWORD dwAddThreadId=threadIdStack.top();
HANDLE handleAddThread=OpenThread(DELETE,FALSE, dwAddThreadId);
return handleAddThread;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: