zoukankan      html  css  js  c++  java
  • Qt 扫描进程列表以及获取进程信息

    使用方法:
    QMap<QString,qint64> app_pid;
    getAllAppPidList( app_pid );

    #include <tlhelp32.h>// for CreateToolhelp32Snapshot
    #include <Psapi.h>   // for GetModuleFileNameEx
    #define FORMAT_PATH(path) path.replace('\','/').toLower()
    QString GetPathByProcessID(DWORD pid)
    {
        HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
        if (!hProcess)
        {
            //QMessageBox::warning(NULL,"GetPathByProcessID","无权访问该进程");
            return "";
        }
        WCHAR filePath[MAX_PATH];
        DWORD ret= GetModuleFileNameEx(hProcess, NULL, filePath, MAX_PATH) ;
        QString file = QString::fromStdWString( filePath );
        //QMessageBox::warning(NULL,"GetPathByProcessID ret=", QString::number(ret)+":"+file);
        CloseHandle(hProcess);
        return ret==0?"":file;
    }
    
    void UDPClient::getAllAppPidList(QMap<QString,qint64>& app_pid)
    {
        PROCESSENTRY32 pe32;
        pe32.dwSize = sizeof(pe32);
        HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        if(hProcessSnap == INVALID_HANDLE_VALUE)
        {
            warningLabel->setText("CreateToolhelp32Snapshot调用失败");
            return ;
        }
        BOOL bMore = Process32First(hProcessSnap,&pe32);
        while(bMore)
        {
            //printf("进程名称:%s
    ",pe32.szExeFile);
            //printf("进程ID:%u
    
    ",pe32.th32ProcessID);
    
            QString exeName = (QString::fromUtf16(reinterpret_cast<const unsigned short *>(pe32.szExeFile)));
            QString exePath = GetPathByProcessID( pe32.th32ProcessID );
            exePath = FORMAT_PATH( exePath );
            if( exePath.isEmpty() )
            {
                warningLabel->setText("获取进程 " + exeName + " 路径失败");
            }
            else
            {
                app_pid[exePath] = pe32.th32ProcessID;
            }
    
            bMore = Process32Next(hProcessSnap,&pe32);
        }
        CloseHandle(hProcessSnap);
    }
  • 相关阅读:
    2822 爱在心中
    P1707 刷题比赛
    1269 匈牙利游戏
    1482 路线统计
    Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)
    P2022 有趣的数
    1087 麦森数
    P1111 修复公路
    python为在线漫画站点自制非官方API(未完待续)
    逻辑运算0==x和x==0具体解释
  • 原文地址:https://www.cnblogs.com/coolbear/p/5157403.html
Copyright © 2011-2022 走看看