不廢話 上代碼
1
2 void CEnumProcessDlg::OnBnClickedOk()
3 {
4 DWORD dwPIDPrcess[1024];
5 // DWORD dwArrSize;
6 DWORD dwSize;
7
8 ::EnumProcesses(dwPIDPrcess , 1024 , &dwSize); //枚舉進程 拿到PID
9 int iCount = dwSize / sizeof(DWORD);
10 for (int i = 0 ; i < iCount ; i++) //枚舉所有進程
11 {
12 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS , TRUE , dwPIDPrcess[i]);
13 HMODULE hProcessModule;
14 DWORD dwEnumProcessModuleSize;
15 TCHAR szProcessName[512];
16 if (hProcess != INVALID_HANDLE_VALUE) //打開了進程
17 {
18 if (EnumProcessModules(hProcess , &hProcessModule , sizeof(HMODULE), &dwEnumProcessModuleSize))
19 {
20 GetModuleBaseName(hProcess , hProcessModule , szProcessName , 512);
21 HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE , dwPIDPrcess[i]);
22 if (hSnapShot == INVALID_HANDLE_VALUE)
23 {
24 CloseHandle(hProcess);
25 continue;
26 }
27 MODULEENTRY32 me32;
28 me32.dwSize = sizeof(MODULEENTRY32);
29 if ( !Module32First(hSnapShot , &me32))
30 {
31 //添加出錯代碼
32 CloseHandle(hSnapShot);
33 CloseHandle(hProcess);
34 continue;
35 }
36 CString strTemp;
37 strTemp.Format(_T("%d") , dwPIDPrcess[i]);
38 m_strProcessName += szProcessName ; //進程名稱
39 m_strProcessName += _T(" ");
40 m_strProcessName +=me32.szExePath; //程序的存放路徑
41 m_strProcessName += _T(" ");
42 m_strProcessName += strTemp; //PID
43 m_strProcessName += _T("\r\n");
44
45 UpdateData(FALSE);
46 CloseHandle(hSnapShot);
47 CloseHandle(hProcess);
48 }//
49
50 }
51 }
52 //OpenProcess
53 //OnOK();
54 }
代碼很短吧...2 void CEnumProcessDlg::OnBnClickedOk()
3 {
4 DWORD dwPIDPrcess[1024];
5 // DWORD dwArrSize;
6 DWORD dwSize;
7
8 ::EnumProcesses(dwPIDPrcess , 1024 , &dwSize); //枚舉進程 拿到PID
9 int iCount = dwSize / sizeof(DWORD);
10 for (int i = 0 ; i < iCount ; i++) //枚舉所有進程
11 {
12 HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS , TRUE , dwPIDPrcess[i]);
13 HMODULE hProcessModule;
14 DWORD dwEnumProcessModuleSize;
15 TCHAR szProcessName[512];
16 if (hProcess != INVALID_HANDLE_VALUE) //打開了進程
17 {
18 if (EnumProcessModules(hProcess , &hProcessModule , sizeof(HMODULE), &dwEnumProcessModuleSize))
19 {
20 GetModuleBaseName(hProcess , hProcessModule , szProcessName , 512);
21 HANDLE hSnapShot = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE , dwPIDPrcess[i]);
22 if (hSnapShot == INVALID_HANDLE_VALUE)
23 {
24 CloseHandle(hProcess);
25 continue;
26 }
27 MODULEENTRY32 me32;
28 me32.dwSize = sizeof(MODULEENTRY32);
29 if ( !Module32First(hSnapShot , &me32))
30 {
31 //添加出錯代碼
32 CloseHandle(hSnapShot);
33 CloseHandle(hProcess);
34 continue;
35 }
36 CString strTemp;
37 strTemp.Format(_T("%d") , dwPIDPrcess[i]);
38 m_strProcessName += szProcessName ; //進程名稱
39 m_strProcessName += _T(" ");
40 m_strProcessName +=me32.szExePath; //程序的存放路徑
41 m_strProcessName += _T(" ");
42 m_strProcessName += strTemp; //PID
43 m_strProcessName += _T("\r\n");
44
45 UpdateData(FALSE);
46 CloseHandle(hSnapShot);
47 CloseHandle(hProcess);
48 }//
49
50 }
51 }
52 //OpenProcess
53 //OnOK();
54 }
上圖片 執行的效果圖



