1. 程式人生 > >獲取windows系統所有執行程序

獲取windows系統所有執行程序

#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);