遍历进程

#include "TLHELP32.H"//一定要加如这个头文件

 

遍历进程
void CShowAllProcessDlg::OnGetProcess()
{
 // TODO: Add your control notification handler code here
 HANDLE Snapshot;
 Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 //获得某一时刻系统的进程、堆(heap)、模块(module)或线程的快照信息
 PROCESSENTRY32 processListStr;
 processListStr.dwSize=sizeof(PROCESSENTRY32);
 BOOL return_value;
 return_value=Process32First(Snapshot,&processListStr);
 //获得系统进程链表中第一个进程的信息
 m_showlist.DeleteAllItems();
 int i=0;//item index
 while(return_value)
 {
 m_showlist.InsertItem(i,processListStr.szExeFile,0);
 CString s;
 s.Format("%d",processListStr.cntThreads);
 m_showlist.SetItemText(i,1,s);
 s.Format("%d",processListStr.th32ParentProcessID);
 m_showlist.SetItemText(i,2,s);
 s.Format("%d",processListStr.pcPriClassBase);
 m_showlist.SetItemText(i,3,s);
 
 int memory=processListStr.cntThreads;
 m_ProcessIndex[i]=processListStr.th32ProcessID;//save ID into array to teminate
 return_value=Process32Next(Snapshot,&processListStr);
 //获得系统进程链表中下一个进程的信息
 i++;
 }

}

 

 

关闭进程

void CShowAllProcessDlg::OnStopProcess()
{
  //先获得该进程句柄,通过进程标识
   HANDLE ProcessHandle;
   ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,m_ProcessIndex[currentSelect]);
   //利用数组ID指定的获得存在的一个进程的句柄
   if(ProcessHandle)
   {

         TerminateProcess(ProcessHandle,0);
         AfxMessageBox("指定进程已终止!");
    }
   else
   {

         AfxMessageBox("系统不允许终止指定进程!");
   }
}

 

loadlibrary("user32.dll");

 

取得IsHungAppWindow()导出函数,用来判断窗口是否Hung

 

Enumwindows(...,...) 遍历窗体实现,GetWindowThreadProcessid()取得processid,

 

再根据pwnd->GetParent()是否为空,取得相关的Pid进行比较

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值