QProcess调用外部的exe,判断外部程序是否在运行

依赖:windows下,Qtcreator;linux未测试

通过网络搜索,有两个地方需要注意;要想成功调用外部的exe,第一需要QProcess,第二需要QProcess的参数,这个参数是task 任务指令

艺术源于网络和Qt官网

1、tasklist和taskkill
  • TASKLIST,显示符合条件的列表信息
  • TASKKILL, 终止对应的程序
    在这里插入图片描述
    在这里插入图片描述
    举例:在这里插入图片描述
    上面的都是来自windows的cmd的指令信息。

eq;相同
ne;不相同
"-“与”"效果是一样的

2、QProcess
  • start
    启动外部程序;当他关闭时,外部程序也会跟着关闭。
    在这里插入图片描述
  • startDetached
    顾名思义,和外部分离开;关闭时,外部程序自行关闭
  • execute
    在这里插入图片描述
    关闭进程
  • close,关闭进程的所有通信并终止它

代码示例:

启动主要是 "command"//cmd指令
检查是否启动主要是  //process->readAllStandardOutput();

method 1: //非阻塞启动
process->startDetached("./SCMS-E.exe",QStringList()<<"command");//脱离
process->start("./test.exe",QStringList()<<"command");//依赖

method 2: //阻塞启动
process->execute("./test.exe",QStringList()<<"command");//不建议这种写法


//结束程序
process->close();
或者
process->execute("taskkill",QStringList()<<"-fi"<<"imagename eq test.exe");


//判断程序是否在运行
process->execute("tasklist", QStringList()<<"-fi"<<"imagename eq test.exe");
QString tmp= QString::fromLocal8Bit(process->readAllStandardOutput());
qDebug()<<"www"<<a;
if (!tmp.contains("test.exe",Qt::CaseInsensitive))
 {
   做你的事情}

补充:waitForFinished; 最开始调用是有效的。

如果进程完成,则返回 true; 否则返回 false (如果操作超时,如果发生错误,或者如果此 QProcess 已经完成)。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值