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#
    向我打赏
    加我微信,聊一聊技术
  • 相关阅读:
    常用的dos命令
    java环境的配置
    javascript面向对象个人理解
    js如何获取样式?
    springboot新建项目遇到Whitelabel Error Page
    CSS 隐藏页面元素的 几 种方法总结
    优美动听的葫芦丝名曲
    大前端资料合集
    CSS实现背景透明,文字不透明(兼容所有浏览器)
    文字上下无缝滚动效果
  • 原文地址:https://www.cnblogs.com/mzy-google/p/5168218.html
Copyright © 2011-2022 走看看