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 }