在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;
}

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

相关推荐
八角.。10 分钟前
面向对象-多态
java·开发语言
@卓越俊逸_角立杰出@17 分钟前
快速学会 Java 实现意图识别:从规则匹配到 BiLSTM 分类器
java·开发语言·人工智能
小小龙学IT21 分钟前
simdjson:利用 SIMD 指令实现 GB/s 级 JSON 解析的 C++ 开源库
开发语言·c++·json
A_nanda31 分钟前
c#WPF开发常见问题
开发语言·c#·wpf
Hello.Reader1 小时前
REALITY 技术深度解析从 TLS 伪装、抗主动探测到 VLESS + XTLS Vision 完整实践
开发语言·php
不正经学生1 小时前
C语言字符串函数进阶:安全版函数 + 错误处理 + 子串查找
c语言·开发语言·c++·算法·面试
ITKEY_1 小时前
neovim基于nvim-jdtls 开发java报错
java·开发语言
無限進步D1 小时前
Java 代码块
java·开发语言
吃好睡好便好1 小时前
MATLAB仿真框图4
开发语言·matlab·仿真·分段函数
TheBestRucy1 小时前
基于Dify的旅游攻略&王者荣耀攻略智能助手项目
服务器·开发语言·人工智能·python·算法·旅游