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


    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    QStringList list("value1, value2, value3");
    Process->start(exePath, list);
    
    • 1
    • 2

    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程序,现在我们通过命令行来启动它。

    D:\MTFTmp2\mlx\x64\Debug>OffLineProcess  "1024,1024,50,50,75,1000/finish1.txt"
    
    • 1

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

    在这里插入图片描述

    📢博客主页: 主页
    📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
    📢本文由 梦回阑珊 原创,首发于 CSDN,转载注明出处🙉
    📢代码改变世界,你来改变代码!✨

  • 相关阅读:
    【C++】基类析构函数报错 LNK2001 无法解析的外部符号
    TinyOs操作系统---第4章 任务中断间的同步与通信
    python vs C++ 谁更快
    前端系列——HTML
    OpenGL获取GPU信息
    c++入门99题21-30
    HarmonyOS4.0系统性深入开发38Web组件概述
    html静态网站基于HTML+CSS+JavaScript上海美食介绍网站网页设计与实现共计5个页面
    批量xls转换为xlsx
    goland的Markdown拖动插入链接编码有问题
  • 原文地址:https://blog.csdn.net/cs1395293598/article/details/134423608