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

    简述

    前几节里,分享了进程通信的几种方式:Windows消息机制、Shared Memory(共享内存),本节讲解下关于进程通信的另外一种方式-QProcess。

    命令行参数启动

    说明

    进程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(" "));

    更多参考


    原文作者:一去丶二三里
    作者博客:去作者博客空间
    作者:芝麻科技
    出处:芝麻麻雀-Asp.Net学习之路
    技术:C++,C#
    向我打赏
    加我微信,聊一聊技术
  • 相关阅读:
    iptbales未完全删除或禁用的问题
    一键部署安装
    python表单流式上传gzip格式文件代码
    was进行jvm配置和GC收集
    Nginx心跳检测
    Python简单本地加解密
    vmware克隆虚拟机并设置网络(vcenter6或5.5)
    python操作mongodb数据库
    vue props传值后watch事件未触发的问题
    docker实战之通过nginx镜像来部署静态页
  • 原文地址:https://www.cnblogs.com/mzy-google/p/5168218.html
Copyright © 2011-2022 走看看