码迷,mamicode.com
首页 > 编程语言 > 详细

获取其他进程中线程状态

时间:2015-01-30 16:44:40      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

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

对于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);

获取其他进程中线程状态

标签:

原文地址:http://www.cnblogs.com/learnup/p/4262324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!