开发者社区> 问答> 正文

枚举进程的具体详细的代码

想知道c++的枚举电脑进程的具体代码是什么,分别要建立几个源文件和头文件

展开
收起
a123456678 2016-03-05 14:17:25 1579 0
1 条回答
写回答
取消 提交回答
  • 主要使用的下面几个函数:

    1、CreateToolhelp32Snapshot

    2、Process32First

    3、Process32Next

    所以要引用下面的头文件:

    [cpp] view plaincopyprint?

    include

    枚举进程的代码如下:

    [cpp] view plaincopyprint?
    // 枚举系统当前所有进程信息

    // 并把信息输出到工程目录下EnumInfo_ToolHelp_process.txt

    BOOL EnumProcessInfo()

    {

    // 定义进程信息结构

    PROCESSENTRY32 pe32 = {sizeof(pe32)} ;

    // 创建系统当前进程快照
    HANDLE hProcessShot = CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 ) ;
    if ( hProcessShot == INVALID_HANDLE_VALUE )

    return FALSE ;  
    

    // 输出进程信息到文件
    ofstream fout ( "EnumInfo_ToolHelp_process.txt" ) ;

    // 循环枚举进程信息
    char szBuf[MAX_BUF_SIZE] = {0} ;
    if ( Process32First ( hProcessShot, &pe32 ) )
    {

    do {  
        memset ( szBuf, 0, sizeof(szBuf) ) ;  
        // 把宽字符的进程名转化为ANSI字符串  
        WideCharToMultiByte (CP_ACP, 0, pe32.szExeFile, wcslen(pe32.szExeFile), szBuf, sizeof(szBuf), NULL, NULL );  
    
        fout << "Process: " << szBuf << endl ;  
        fout << '\t' << "Usage           : " << pe32.cntUsage << endl ;  
        fout << '\t' << "ProcessID       : " << pe32.th32ProcessID << endl ;  
        fout << '\t' << "DefaultHeapID   : " << (ULONG_PTR)pe32.th32DefaultHeapID << endl ;  
        fout << '\t' << "ModuleID        : " << pe32.th32ModuleID << endl ;  
        fout << '\t' << "ThreadNum       : " << pe32.cntThreads   << endl ;  
        fout << '\t' << "ParentProcessID : " << pe32.th32ParentProcessID << endl ;  
        fout << '\t' << "PriClassBase    : " << pe32.pcPriClassBase << endl ;  
    }while ( Process32Next ( hProcessShot, &pe32 ) ) ;  

    }

    fout.close () ;
    CloseHandle ( hProcessShot ) ;
    return TRUE ;
    }

    2019-07-17 18:53:26
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
服务上云加速大家居产业C2M进程 立即下载
《0代码搭应用》 立即下载
不止代码 立即下载

相关实验场景

更多