進程名:
1.進程名如果不加 .exe后綴,與任務管理器中的不一致就會失敗;
2. 對進程名大小寫不敏感,大小寫無所謂
命令參數需用引號隔開,否則不能識別
tasklist /FI命令結論:
對於空格不敏感。無論是 tasklist/fi, tasklist /fi都可以;
對於大小寫不敏感,
tasklist /fi = TASKLIST /FI = tasklist /fi
imagename= IMAGENAME
示例進程名字 systime.exe = sysTime.exe
都不會報錯
后面的參數必須加引號;
進程名必須和任務管理器中的名字一致,那里面如果有.exe后綴,此處命令中必須也有后綴。
————————————————
QT代碼:
bool IfProcessIsRuning(const QString &appName)
{
#ifdef Q_OS_WIN //表示如果在windows下
qDebug()<< FUNCTION;
QProcess process;
process.start(“tasklist” ,QStringList()<<"/FI"<<“imagename eq " +appName); //執行tasklist程序
//process.start(“tasklist”); //執行tasklist程序----這種方式也行,只是后面讀出來的內容有點多。
process.waitForFinished(5000); //阻塞5秒等待tasklist程序執行完成,超過五秒則直接返回
QString outputStr = QString::fromLocal8Bit(process.readAllStandardOutput()); //把tasklist程序讀取到的進程信息輸出到字符串中
if(outputStr.contains(appName))
{
process.close(); //用完記得把process關閉了,否則如果重新調用這個函數可以會失敗
//qDebug()<<” OK, have found it!";
return true;
}
else
{
process.close();
//qDebug()<<" No, can’t find it!";
return false;
}
#endif
}
————————————————