windows端的Qt程序往往需要打開外部程序(如:prog.exe),並且需要確定這個外部程序是唯一打開的。
1、判斷系統中是否存在prog.exe
void judge()
{
QProcess tasklist;
tasklist.execute("tasklist", QStringList()<<"-fi"<<"imagename eq prog.exe");
}
2、終止系統中的prog.exe進程
void kill()
{
QProcess taskkill;
taskkill.execute("taskkill", QStringList()<<"-im"<<"prog.exe"<<"-f");
}
3、打開外部程序prog.exe
void open()
{
QProcess newProg;
newProg.start("prog.exe", QStringList()<<"command");
}
番外1:
QProcess::execute(): ---- 以阻塞方式打開外部程序,只有當外部程序執行完后才繼續往后執行現程序。其中,外部程序的標准輸出、標准錯誤都是重定向到現程序的標准輸出和標准錯誤。
QProcess::start(): ---- 以子進程的方式打開外部程序,外部進程和現進程執行互不干擾,但外部進程的父進程是現進程。
QProcess::startDetached():---- 以分離方式打開外部程序,外部進程和現進程執行互不干擾,外部進程的父進程是系統的init進程。
番外2:
1. tasklist -fi "imagename eq prog.exe" -- 顯示進程名為prog.exe的進程信息
2. tasklist -fi "imagename ne prog.exe" -- 顯示進程名不為prog.exe的進程信息
3. tasklist -fi "pid eq 1111" -- 顯示進程號為1111的進程信息
4. taskkill -f -pid 1111 -- 強制終止進程號為1111的進程
5. taskkill -f -im prog.exe -- 強制終止所有進程名為prog.exe的進程樹
6. taskkill -f -fi "imagename eq prog.exe" -- 強制終止所有進程名為prog.exe的進程樹
http://blog.csdn.net/zuijinhaoma8/article/details/42061243
