在Qt中获取Windows中进程的PID

主要是用到了系统自带的工具【tasklist.exe】

利用 QProcess调用这个tasklist有一点坑,已经在代码中指出了。

指定为csv格式输出的话,在后处理时比较方便。

cpp 复制代码
QList<quint64> listProcessIdentifier(QString processName)
{
    QProcess process;

    QStringList mList;
    // 这里的 "IMAGENAME eq %1" 不知道为啥不能写成 "\"IMAGENAME eq %1\"",明明在cmd窗口输入时需要加引号
    mList << "/FI" << QString("IMAGENAME eq %1").arg(processName) << "/FO" << "CSV";
    process.start("tasklist.exe", mList);

    process.waitForStarted();
    process.waitForFinished();

    QString ret = process.readAll();
    ret = ret.trimmed();

    QList<quint64> pidList;
    QStringList resultList = ret.split("\r\n");
    resultList.removeFirst(); // 去掉表头
    if(resultList.length() > 0)
    {
        foreach (const QString &str, resultList)
        {
            QString pidStr = str.split(",").at(1);
            pidStr.replace("\"", ""); // 清除双引号
            pidList << pidStr.toUInt();

            // qDebug() << str << pidStr;
        }
    }

    return pidList;
}

可以看到,得到的结果与在任务管理器中看到的是一致的。

相关推荐
Chase_______7 小时前
【Java杂项】String 为什么不可变?从对象引用、常量池到字符串拼接讲清楚
java·开发语言
xwjalyf7 小时前
javascript数组 forEach,filter,some,every,map,find,reduce的用法与区别
开发语言·javascript·json·ecmascript
qq_2518364577 小时前
基于java Web 耗材购置与维修网络申报审批系统设计与实现
java·开发语言·前端
AI玫瑰助手7 小时前
Python函数:def定义函数与参数传递基础
android·开发语言·python
吃胖点儿7 小时前
RAG系统优化完整路径:从30%到90%准确率的工程实践
服务器·数据库·windows
剑傲娇7 小时前
【计算机组成原理】 C与汇编的「对话」
服务器·开发语言·缓存
生活爱好者!7 小时前
用NAS进行漫画创作!一键部署Open WebUI
java·服务器·开发语言·安全·docker
charlie1145141917 小时前
现代C++特性指南(5)——RAII 深入理解:资源管理的基石
开发语言·c++·现代c++
神仙别闹8 小时前
基于QT(C++)+Sqlite3实现单词消除游戏系统
c++·qt·sqlite