1 说明
基本原理就是使用tasklist命令,加上/FI参数,filter 显示一系列符合筛选器指定的进程。
使用QProcess类执行该命令,最后获取该命令返回并进行判断。
2 封装函数
bool processIsRun(QString exeName)
{
QProcess process;
process.start("tasklist" ,QStringList()<<"/FI"<<"imagename eq "+exeName);
process.waitForFinished();
QString outputStr = QString::fromLocal8Bit(process.readAllStandardOutput());
qDebug()<<outputStr;
return outputStr.contains("PID") && outputStr.contains(exeName);
}
3 demo
int main(int argc, char *argv[])
{
QString inputstr = "IDCardInfo.exe";
bool flag = processIsRun(inputstr);
qDebug()<<"flag"<<flag;
}
4 运行现象
进程不存在输出:
"信息: 没有运行的任务匹配指定标准。\r\n"
flag false
进程存在输出:
"\r\n映像名称 PID 会话名 会话# 内存使用 \r\n========================= ======== ================ =========== ============\r\nIDCardInfo.exe 5244 Console 2 22,004 K\r\n"
flag true