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

  • 相关阅读:
    梅花雨控件使用时注意的...
    利用XML实现通用WEB报表打印(实现篇)
    Improve performance using ADO.NET 2.0 batch update feature
    hook
    owc11生成饼状图
    PHP数组合并:[“+”运算符]、[array_merge]、[array_merge_recursive]区别
    PHP中使用函数array_merge()合并数组
    WCF 第四章 绑定
    WCF 第四章 绑定 跨机器通信
    WCF 第六章 序列化与编码 系列文章
  • 原文地址:https://www.cnblogs.com/zhongbin/p/3058710.html
Copyright © 2011-2022 走看看