用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程 .

用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程
在很多情况下需要对系统的进程进行操作,方法有很多种但最常用的是
CreateToolhelp32Snapshot/Process32First/Process32Next 一系列API使现结束进程使用
TerminateProcess使现
下面的函数可以使现对进程的枚举:
 
int ProcessList()
{
       PROCESSENTRY32 pe32;
       pe32.dwSize=sizeof(pe32);
       int count=0;
 
       HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 
       if(hProcessSnap==INVALID_HANDLE_VALUE)
       {
              printf("CreateToolhelp32Snapshot调用失败!");
              return -1;
       }
 
       BOOL bMore=::Process32First(hProcessSnap,&pe32);
      
       printf("%20s/t%10s/n","进程名","PID");
       printf("====================================/n");
       while(bMore)
       {
              count++;
              printf("%20s/t%10d/n",pe32.szExeFile,pe32.th32ProcessID);
              bMore=::Process32Next(hProcessSnap,&pe32);
       }
 
       ::CloseHandle(hProcessSnap);
 
       printf("====================================/n");
       printf("/n当前系统进程数为:%d/n",count);
 
       return 0;
}
 
结束进程可以使用下面的函数:(使现其中dwid为想要结束的进程ID可通过列进程的函数得到)
 
int TerminateProcessFromId(DWORD dwId)
{
       BOOL bRet=FALSE;
 
       HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwId);
       if(hProcess!=NULL)
       {
              bRet=::TerminateProcess(hProcess,0);
       }
 
       ::CloseHandle(hProcess);
 
       if(bRet)
              printf("%d 进程结束成功....../n/n/n/n",dwId);
       else
              printf("%d 进程结束失败....../n/n/n/n",dwId);
 
       return 0;
}
 
与进程相关的操作通常还要提升权限,由关提升权限可以看偶的另一篇笔记《提升进程权限代码.》
由于代码相对比较简单,所以就没有更多的文字说明,关键的函数加了注释,其实使用时直接调用就OK了.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值