獲取windows系統所有執行程序
阿新 • • 發佈:2019-02-12
#include <TlHelp32.h>
包含此標頭檔案bool traverseProcesses(map<string, int>& _nameID) { PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); //MSDN中描述初始化dwsize,否則獲取Process32First fail HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//獲取程序快照 if(hProcessSnap == INVALID_HANDLE_VALUE) { cout << "CreateToolhelp32Snapshot Error!" << endl;; return false; } BOOL bResult =Process32First(hProcessSnap, &pe32); //獲取第一個程序 int num(0); while(bResult) { //string name = string(pe32.szExeFile); char temp[300];
//pe32.szExeFile為獲取當前程序名,wideCharToMultiByte為字元型別轉換
WideCharToMultiByte(CP_ACP, 0, pe32.szExeFile, -1, temp, sizeof(temp), NULL, NULL); string name = string(temp); int id = pe32.th32ProcessID; //獲取程序ID索引 cout << "[" << ++num << "] : " <<"Process Name:" << name << " " << "ProcessID:" << id<< endl; _nameID.insert(pair<string, int>(name, id)); //字典儲存 bResult = Process32Next(hProcessSnap,&pe32); } CloseHandle(hProcessSnap); return true; }
//簡單版本
#include <TlHelp32.h> PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); HANDLE hprocessHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); bool bResult = Process32First(hprocessHandle, &pe32); while(bResult) { pe32.szExeFile; bResult = Process32Next(hprocessHandle,&pe32); } CloseHandle(hprocessHandle);