【转】控制台程序遍历进程及结束常规程序的程序源码
代码 不解释:
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