【转】控制台程序遍历进程及结束常规程序的程序源码

代码 不解释:

View Code
 1 // GetProcessList.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 
 6 
 7 char* _w2s(const WCHAR* ws)  
 8 {  
 9     char *sz;
10     size_t len;
11     size_t converted;
12     len = wcslen(ws)+1;
13     converted=0;
14     sz = (char*)malloc(len*sizeof(char));
15     wcstombs_s(&converted, sz, len, ws, _TRUNCATE); 
16     //(char*)ws=sz;
17     return sz;
18 }  
19   
20 wstring _s2w( const string& s )  
21 {  
22     setlocale(LC_ALL, "chs");  
23     const char* _Source = s.c_str();  
24     size_t _Dsize = s.size() + 1;  
25     wchar_t *_Dest = new wchar_t[_Dsize];  
26     wmemset(_Dest, 0, _Dsize);  
27     mbstowcs(_Dest,_Source,_Dsize);  
28     std::wstring result = _Dest;  
29     delete []_Dest;  
30     setlocale(LC_ALL, "C");  
31     return result;  
32 }
33 
34 int _tmain(int argc, _TCHAR* argv[])
35 {
36     PROCESSENTRY32 pe32;
37     //使用这个结构之前先设置其大小
38     pe32.dwSize=sizeof(pe32);
39     //给系统所有进程拍一张快照
40     /*
41     dwFlag 
42     TH32CS_INHERIT 表示快照句柄是可继承。
43     TH32CS_SNAPALL 等效,指定TH32CS_SNAPHEAPLIST,TH32CS_SNAPMODULE,TH32CS_SNAPPROCESS,TH32CS_SNAPTHREAD
44     TH32CS_SNAPHEAPLIST 枚举进程中的堆
45     TH32CS_SNAPMODULE 枚举进程中的模块
46     TH32CS_SNAPPROCESS 枚举快照中的进程
47     TH32CS_SNAPTHREAD 枚举快照进程中的线程
48     */
49     HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
50     if(INVALID_HANDLE_VALUE==hProcessSnap){
51         printf("CreateToolHelp32Snapshot 调用失败!");
52         return -1;
53     }
54     //遍历进程快照 轮流显示进程信息
55     BOOL bMore=::Process32First(hProcessSnap,&pe32);
56     char *sz;
57     size_t len;
58     size_t converted;
59 
60     while(bMore){
61         //sz=(char *)pe32.szExeFile;
62         //printf("进程名称: %s\n",sz);
63         /*len = wcslen(pe32.szExeFile)+1;
64         converted=0;
65         sz = (char*)malloc(len*sizeof(char));
66         wcstombs_s(&converted, sz, len, pe32.szExeFile, _TRUNCATE); 
67         */
68         sz=_w2s(pe32.szExeFile);
69         cout<<"进程名称: "<<sz<<endl;
70         printf("进程ID: %u\n\n",pe32.th32ProcessID);
71         bMore=::Process32Next(hProcessSnap,&pe32);
72     }
73     //关闭快照对象
74     ::CloseHandle(hProcessSnap);
75     HANDLE hProcess;
76     UINT uExitCode=0;
77     DWORD dwID;
78     cout<<"请输入您要结束进程的ID号: ";
79     cin>>dwID;
80     //打开进程
81     hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwID);
82     //终止其他进程
83     if(hProcess){
84         ::TerminateProcess(hProcess,uExitCode);
85     }
86     getchar();
87     return 0;
88 }

 

转载:

控制台程序遍历进程及结束常规程序的程序源码|http://www.hacktea8.com/read-htm-tid-3151-ds-1.html

 

 

posted @ 2013-05-04 08:11  编程狂热者  阅读(224)  评论(0编辑  收藏  举报