《QT从基础到进阶·二十八》QProcess使用,从一个exe程序启动另一个exe程序

cpp 复制代码
QString exePath = QCoreApplication::applicationDirPath();  //获取要启动的另一个exe路径
exePath = exePath + "/OffLineProcess.exe";                //路径+exe名称
QProcess* Process = new QProcess;                         //创建新的进程
Process->start(exePath);             //在当前程序中启动新的exe程序
if (!Process->waitForStarted(1000))  //1000ms 阻塞当前程序1s等待Process执行完成
    return false;

如果在当前程序中启动另一个exe程序,并希望在启动这个exe程序时能够传值,可以如下操作:

cpp 复制代码
QStringList list("value1, value2, value3");
Process->start(exePath, list);

list参数会被另一个exe程序的main函数接受

正常argv[0]显示的是exe所在的路径,argv[1]才是接受的参数

可以这样写:

If (argc == 2) w.RevTest(argv[1]);

启动外部exe程序的两种方式:

简而言之:

QProcess::start()与QProcess::execute()都能完成启动外部程序的任务,但start()是非阻塞的,而execute()是阻塞的。换句话说,execute()=start()+waitforFinished()。

Start()启动了外部程序会接着走下面的程序,execute()启动了外部程序会等到外部程序结束才会走下面的程序。

除了在我们自己写的程序中启动外部程序,我们还可以通过命令行启动外部程序并传值:

先通过cmd打开命令行,加入我们在D:\MTFTmp2\mlx\x64\Debug目录下写了一个OffLineProcess.exe程序,现在我们通过命令行来启动它。

cpp 复制代码
D:\MTFTmp2\mlx\x64\Debug>OffLineProcess  "1024,1024,50,50,75,1000/finish1.txt"

前一个只需要输入软件名称后面不用加.exe后缀,后一个字符串是把字符串内容传递给外部程序,通过外部程序的main(int argc, char*argv[])获取字符串内容,启动外部程序需要一个路径,一个参数,所以argc = 2,argv[0]存放路径,argv[1]存放参数。

📢博客主页: 主页

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📢本文由 梦回阑珊 原创,首发于 CSDN,转载注明出处🙉

📢代码改变世界,你来改变代码!✨

相关推荐
D_evil__5 小时前
【Effective Modern C++】第三章 转向现代C++:16. 让const成员函数线程安全
c++
微风中的麦穗5 小时前
【MATLAB】MATLAB R2025a 详细下载安装图文指南:下一代科学计算与工程仿真平台
开发语言·matlab·开发工具·工程仿真·matlab r2025a·matlab r2025·科学计算与工程仿真
2601_949146535 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
开源技术5 小时前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
学嵌入式的小杨同学5 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
Aaron15886 小时前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
Queenie_Charlie6 小时前
前缀和的前缀和
数据结构·c++·树状数组
mftang7 小时前
Python 字符串拼接成字节详解
开发语言·python
四维碎片7 小时前
【Qt】UDP跨平台调试工具
qt·学习·udp
爱编码的小八嘎7 小时前
C语言对话-21.模板特化,缺省参数和其他一些有趣的事情
c语言