posts - 23,  comments - 20,  trackbacks - 0
主要是锻炼一下自己关于进程操作方面的能力  最主要是  要用好MSDN
不废话 上代码

 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 }
代码很短吧...
上图片  执行的效果图


posted on 2009-08-15 17:47 李佳 阅读(215) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年8月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿

随笔分类

随笔档案

文章档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜