Qt之进程间通信(QProcess)
2016-01-28 18:44
609 查看
简述
QProcess可以在应用程序内部与其它进程通信,或启动其它应用程序。与在终端机之类的命令输入窗口上使用名称和参数是一样的,可以使用QProcess提供的函数start()启动进程。可以注册QStringList处理进程后的参数。简述
命令行参数启动
说明
实现
命令行读取
说明
实现
更多参考
命令行参数启动
说明
进程A-带参启动进程B一般编写程序时,严格来说,启动外部程序,需要判断版本是debug还是release。否则,有可能会造成错误。
判断将要启动的进程是否存在,如果不存在,则启动;否则,不启动。
传参:这里我列举的是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-命令行读取在main函数中初始化QApplication以后,获取命令行参数。
命令行参数中包含当前程序的名称、接收的参数等信息。
实现
QStringList cmdLineArgs = QCoreApplication::arguments(); QMessageBox::information(NULL, QStringLiteral("ReceiveMessage"), cmdLineArgs.join(" "));
更多参考
Qt之启动外部程序Qt之命令行参数
相关文章推荐
- Qt5.4.1编译QtCharts 2.1
- QT5+OpenCV磨皮效果
- 转《Qt教程一 —— 第六章:组装丰富的积木!》
- 转《Qt教程一 —— 第五章:组装积木》
- 转《Qt教程一 —— 第四章:使用窗口部件》
- 转《Qt教程一 —— 第三章:家庭价值》
- 最新的QT git代码到code.qt.io/cgit,还有planet.qt.io有许多博客
- 【QTP】自动化测试:
- QT5+OpenCV团块运动检测
- Qt5.5连接mysql数据库提示QMYSQL driver not loaded
- QT Creator 如何将第三方库加入到环境内
- QT5+OpenCV人脸识别
- QT5+OpenCV人脸、人眼检测
- 编译VTK时Qt5_DIR-NOTFOUND的解决方法
- QT 主要类使用方法
- 详细介绍QT 主要类使用方法
- deploy 自己编写的 QT 程序 (window下打包程序)
- qt5.3的操作技巧
- QTextEdit实现语法高亮-Syntax Highlighter Example例子简单介绍
- 自学QT之建立子项目