遍历所有系统进程(C++)

本文提供了两种使用C++在Windows环境下获取并显示系统中所有运行进程名称及ID的方法。第一种方法通过调用`CreateToolhelp32Snapshot`和`Process32First`等API函数来遍历进程快照;第二种方法利用`EnumProcesses`函数配合`OpenProcess`和`GetModuleFileNameExA`函数来获取进程路径。
#include <windows.h>
#include <tlhelp32.h>
#include <iostream.h>
void main()
{
 HANDLE hsnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 if(INVALID_HANDLE_VALUE==hsnap)
 {
  cout<<"sorry create snap of the processes failed!"<<endl;
  return;
 }
 else
 {
   PROCESSENTRY32 pe;
   pe.dwSize=sizeof(PROCESSENTRY32);
   int b=::Process32First(hsnap,&pe);
   while(b)
   {
    cout<<"进程名:"<<pe.szExeFile<<"  进程ID:"
     <<pe.th32ProcessID<<endl;
    b=::Process32Next(hsnap,&pe);
   }
 }
 ::CloseHandle(hsnap);
}
或者以下写法:
int main()
{
DWORD process_ids[1024 * 2];
HANDLE process[1024 * 2];
DWORD num_process;
TCHAR fileName[1024];
EnumProcesses(process_ids, sizeof(process_ids), &num_process);
for (int i = 0; i < num_process; i++)
{
process[i] = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, process_ids[i]);
if (GetModuleFileNameExA(process[i], NULL, fileName, sizeof(fileName)))
cout << fileName << endl;
}

system("pause");
return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值