获取其他进程中线程状态

进程是由线程组成,启动是的第一个线程为主线程。

对于Windows来说,不存在暂停或恢复进程的概念,因为进程从来不会被安排获得cpu时间。

但是我们可以创建一个函数,用来挂起或者恢复进程中的全部线程,这样就能挂起或者恢复一个进程了。

在进程外获取该进程的线程。

方法:

一、获取目标窗口句柄和进程PID

HWND hCalc = ::FindWindow(NULL, "第几课作业 Hardware断点");

GetWindowThreadProcessId(hCalc, &th32ProcessID);

二、通过CreateToolhelpSnapshot函数创建一线程快照;

HANDLE hSnapThread = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, th32ProcessID); 

三、使用Thread32First以及Thread32Next函数遍历系统中所有线程,根据比较线程父进程ID(th32ProcessID)来过滤指定进程的所有线程;

if (INVALID_HANDLE_VALUE != hSnapThread)
{
THREADENTRY32 te32 = {sizeof(te32)};
if (Thread32First(hSnapThread, &te32))
{
do {
if (th32ProcessID == te32.th32OwnerProcessID)
{

//操作

}

}while (Thread32Next(hSnapThread, &te32));

}}

四、关闭线程快照句柄.

 CloseHandle(hSnapThread);

posted @ 2015-01-30 14:43  0x64  阅读(281)  评论(0编辑  收藏  举报