//readProcess.cpp
/***************************************
有些程序需要列出当前正在运行的一些列进程,使用ToolHelp函数就可以完成这一任务。
下面程序
1、首先使用CreateToolhelp32Snapshot函数给当前系统内执行的进程拍快照(Snapshot),
也就获得一个进程列表,这个列表中记录着进程的ID、进程对应的可执行文件的名称和创建该进程的进程ID等数据。
2、然后使用Process32First函数和Process32Next函数遍历快照中记录的列表。
3、对于每个进程,我们都将打印出其可执行文件的名称和进程ID号。
***************************************/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <tlhelp32.h> //声明快照函数的头文件
int main(int argc, char *argv[])
{
PROCESSENTRY32 pe32;
//在使用这个结构之前,先设置它的大小
pe32.dwSize = sizeof(pe32);
//给系统内所有的进程拍一个快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot调用失败! \n");
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap, &pe32);
while (bMore)
{
printf(" 进程名称:%s\n", pe32.szExeFile);
printf(" 进程ID号:%u\n\n", pe32.th32ProcessID);
bMore = ::Process32Next(hProcessSnap, &pe32);
}
//不要忘记清除掉snapshot对象
::CloseHandle(hProcessSnap);
system("pause");
return 0;
}
参考:windows程序设计(第二版)
网友评论