zoukankan      html  css  js  c++  java
  • 【转】控制台程序遍历进程及结束常规程序的程序源码

    代码 不解释:

    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

  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/zhongbin/p/3058710.html
Copyright © 2011-2022 走看看