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

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

相关推荐
维吉斯蔡2 小时前
【VS Code / Cursor】文件夹右键快捷打开与文件类型自动关联
开发语言·程序人生·学习方法
luj_17685 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
always_TT5 小时前
【Python 日志记录:logging 模块入门】
开发语言·python·php
xcLeigh5 小时前
Go入门:变量声明的五种方式详解
java·开发语言·golang
zmzb01035 小时前
C++课后习题训练记录Day175
开发语言·c++
脱胎换骨-军哥6 小时前
C++ 代码规范与格式化指南
开发语言·c++·代码规范
枕星而眠7 小时前
C++ STL Map容器完全指南:从有序红黑树到无序哈希表
java·开发语言
小白白3617 小时前
Pixelorama怎么用?像素画绘制和动画制作入门
windows
爱吃牛肉的大老虎7 小时前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
bbq粉刷匠8 小时前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法