qt中如何调用外部exe程序及如何判断调用的程序状态

1、如何调用外部exe程序

非阻塞模式

QProcess *myProcess = new QProcess(this);

QString program =  "D:\\WinPie.exe";

QStringList arguments;//传递到exe的参数

QString piex = QString::number(this->x());//int型转QString

QString piey = QString::number(this->y());//

arguments.append(piex);//把窗口的屏幕坐标x,传出

arguments.append(piey);// 把窗口的屏幕坐标y,传出

myProcess->start(program,arguments);//启动exe程序,同时传参。

外部程序exe的做法是:

在不需要获取调用传过来的参数的情况下,可以不用做额外操作。

如果需要解析传过来的参数的话。

#include <stdlib.h>

int main(int argc, char *argv[])

{

   该主函数中,argc是参数的个数,一般情况下为1

   argv[]是一个字符串数组,argv[0]中放的是该程序的路径,一般参数是从下标为1开始。

int pieX = 200;

    int pieY = 800;

    if(argv[1] !=nullptr && argv[2] != nullptr)

    {

        pieX = atol(argv[1]);//提取传进来的参数使用。

        pieY = atol(argv[2]); //把char*转成int。

    }

}

2、判断QProcess->start启动的程序的状态

使用myProcess->state() 函数,它有 QProcess::NotRunning,
QProcess::Running及QProcess::Starting三种状态。

 
Qt是一个开发框架,它提供了丰富的功能和工具来开发各种类型的应用程序。其中,调用外部exe方法也是Qt中的一个常见需求。 要在Qt调用外部exe方法,可以使用QProcess类。QProcess类提供了一种在新进程中执行外部程序的能力。以下是一个示例代码: ``` #include <QCoreApplication> #include <QProcess> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QProcess process; QString program = "外部exe的路径"; // 外部exe的路径 QStringList arguments; // 传递给外部exe的参数 arguments << "参数1" << "参数2"; process.start(program, arguments); // 启动外部exe process.waitForFinished(); // 等待外部exe完成 QString output = process.readAllStandardOutput(); // 读取外部exe的输出 QString error = process.readAllStandardError(); // 读取外部exe的错误信息 return a.exec(); } ``` 在这个示例中,首先创建了一个QProcess对象,然后设置了外部exe的路径和参数。接着使用start方法来启动外部exe,并使用waitForFinished方法等待外部exe完成执行。最后,通过readAllStandardOutput和readAllStandardError方法读取外部exe的输出和错误信息。 需要注意的是,如果外部exe需要用户输入,可以使用write方法来向外部exe发送输入。另外,QProcess还提供了其他一些方法和信号,用于处理和监控外部exe的执行过程。 总结起来,在Qt调用外部exe方法可以使用QProcess类,通过设置外部exe的路径和参数,启动外部exe,等待其完成执行,并读取输出和错误信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值