zoukankan      html  css  js  c++  java
  • Qt之进程间通信(QProcess)

    简述

    QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序。与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程。可以注册QStringList处理进程后的参数。

    命令行参数启动

    说明

    进程A-带参启动进程B

    1. 一般编写程序时,严格来说,启动外部程序,需要判断版本是debug还是release。否则,有可能会造成错误。
    2. 判断将要启动的进程是否存在,如果不存在,则启动;否则,不启动。
    3. 传参:这里我列举的是json格式。

    实现

    void onSendMessage()
    {
        QString strExe("");
        if (m_pProcess == NULL)
            m_pProcess = new QProcess(this);
    
    #if defined(QT_DEBUG)
        strExe = "ReceiveMessaged.exe";
    #   else
        strExe = "ReceiveMessage.exe";
    #  endif
    
        // 判断进程是否存在
        QProcess tasklist;
        tasklist.start("tasklist",
                       QStringList() << "/NH"
                       << "/FO" << "CSV"
                       << "/FI" << QString("IMAGENAME eq %1").arg(strExe));
        tasklist.waitForFinished();
        QString strOutput = tasklist.readAllStandardOutput();
        if (!strOutput.startsWith(QString(""%1").arg(strExe)))
        {
            QJsonObject json;
    
            json.insert("UserName", QStringLiteral("╰☆一去、二三里`"));
            json.insert("Password", "123456");
    
            QJsonDocument document;
            document.setObject(json);
            QByteArray byteArray = document.toJson(QJsonDocument::Compact);
    
            QStringList arguments;
            arguments << byteArray;
            m_pProcess->startDetached(strExe, arguments);
        }
    }

    命令行读取

    说明

    进程B-命令行读取

    1. 在main函数中初始化QApplication以后,获取命令行参数。
    2. 命令行参数中包含当前程序的名称、接收的参数等信息。

    实现

    QStringList cmdLineArgs = QCoreApplication::arguments();
    QMessageBox::information(NULL, QStringLiteral("ReceiveMessage"), cmdLineArgs.join(" "));

    更多参考

  • 相关阅读:
    一百多套开发视频教程的下载地址
    http://blog.csdn.net/chlele0105/article/details/9056951
    http://kb.cnblogs.com/page/541862/
    Linux版本选择
    2015-2016规划
    PHP 类的继承一些知识点汇总
    PHP面向对象的基本属性分析
    PHP中的魔术方法总结 :
    PHP字符串常用操作函数
    php八中数据类型以及相互转换
  • 原文地址:https://www.cnblogs.com/itrena/p/5938385.html
Copyright © 2011-2022 走看看