1 #include <Windows.h>
2 #include <TlHelp32.h>
3 #include <cstdio>
4 #include <tchar.h>
5
6 int _tmain(int argc, _TCHAR* argv[])
7 {
8 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//TH32CS_SNAPPROCESS: 快照当前系统中所有进程;
9 if (hProcessSnap == FALSE)
10 {
11 printf("CreateToolhelp32Snapshot error");
12 return -1;
13 }
14 PROCESSENTRY32 pe32;
15 pe32.dwSize = sizeof(PROCESSENTRY32);//需要初始化dwSize,官方给出的说法是:If you do not initialize dwSize, Process32First fails.
16
17 BOOL bRet = Process32First(hProcessSnap, &pe32);//此函数检索有关系统快照中遇到的第一个进程的信息。
18 while (bRet)
19 {
20 printf("[process name]:%ws\n", pe32.szExeFile);//由于szExeFile是DWORD,所以需要用ws来进行输出、
21 printf("[PID]:%d\n\n", pe32.th32ProcessID);
22 bRet = Process32Next(hProcessSnap, &pe32);//获取下一进程的信息,并送给bRect。
23 }
24 CloseHandle(hProcessSnap);
25 return 0;
26 }