QT 两个exe之间通信

2023-05-16

一、通信方式
通过windowAPI,SendMessage进行通信,等待结果返回,是一种同步的方式。PostMessage是将消息放入消息队列中,立即返回,是一种异步的方式。我采用的是同步的方式,两种方式用法一样。
二、发送方A程序

#pragma comment  (lib,"User32.lib")
#pragma comment  (lib,"Gdi32.lib")
#include <qt_windows.h>
#include <QTextCodec>
#include <future>
#include <Windows.h>
void MainWindow::on_pushButton_clicked()
{
    //查找窗口句柄(L 将该字符串当做Unicode来编译)
    HWND hWnd = FindWindow(NULL, L"王者荣耀");
    if (hWnd != 0) {
        qDebug()<<"\n窗口句柄:" << hWnd;
    }

    //WId wid = this->winId();
    //qDebug()<<"本机hwnd"<<(HWND)wid;
    m_wnd = hWnd;

    if (NULL != m_wnd) { 
        QString command = QString("%1").arg(ui->lineEdit->text());
        std::string param = command.toStdString();
        COPYDATASTRUCT data;           //使用COPYDATA的方式进行数据传递
        data.dwData = 0;               //指定传输的数据
        data.cbData = param.length();  //指定数据大小
        data.lpData = &param[0];       //指向要传递到接收应用程序的数据的指针。可以为空
        
        SendMessage(m_wnd, WM_COPYDATA, 0, (LPARAM)&data);
    }
}

三、接收方B程序
B程序,重写nativeEvent函数

bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    if (eventType == "windows_generic_MSG") //windows平台
    {
        MSG* msg = reinterpret_cast<MSG*>(message);
        if (msg->message == WM_COPYDATA)
        {
            COPYDATASTRUCT *data = reinterpret_cast<COPYDATASTRUCT*>(msg->lParam);
            QTextCodec *gbk = QTextCodec::codecForName("utf-8");
            QString recevice = gbk->toUnicode((char *)(data->lpData));//转码

            ui->label->setText(QString("系统收到消息:%1").arg(recevice));
            return true;//消息不再进行传递,不再处理
        }
    }

    return QWidget::nativeEvent(eventType, message, result);
}

四、效果图
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 两个exe之间通信 的相关文章

  • JavaFX .exe 文件因主类异常而失败

    我开发了一个 JavaFX 应用程序 并使用本机打包工具 包括 Inno Setup 5 和 WiX 来创建 exe 文件和安装程序 该程序是一个独立的应用程序 这意味着它有自己的 JRE 和 lib 文件夹中的一些外部 jar 当我安装并
  • 如何将文件添加到 exe

    我有一个播放声音的程序 但如果我在另一台计算机上运行它 它会说找不到该文件 如何将文件附加到 exe 上 以便当有人播放 exe 时它仍然能够播放 如果您想将波形文件嵌入到程序中 请转到项目属性 gt 资源 gt 选择音频作为类型 然后选择
  • 在命令提示符中 PHP 未被识别为内部或外部命令

    当我运行命令时出现以下错误php C xampp htdocs gt php php is not recognized as an internal or external command operable program or batc
  • 运行使用 folium 的可执行文件时,Branca Python 模块无法找到 2 个必要的 json 文件

    有可能这仍然是一个问题 Pyinstaller 和 或 Folium 人员没有兴趣修复它 但我会在这里再次发布它 以防有人发现解决方法 我有一个程序可以创建地图 地理编码等 最近添加了 folium 包来创建一些 html 格式的交互式地图
  • 需要帮助来使用 pyinstaller 编译 python

    我想在运行 Windows 7 的计算机上分发我的 Python 代码 它由几个 py 文件组成 其中主文件位于cprofiles lmfit py 连同一个文件cprofiles ui描述 GUI 和文档的 pdf 我过得很艰难 见从使用
  • 使用 jar 文件和资源创​​建 exe

    有没有办法创建一个包含资源文件夹的 exe 文件 我正在寻找类似 mac 的应用程序捆绑包之类的东西 我还希望能够写入和读取资源文件夹中的文件 如果您使用其中的资源构建 jar 那么您可以使用launch4j http launch4j s
  • 我想让这个 prolog 文件成为独立的 EXE 文件

    我是 prolog 新手 我已经编写了这段代码 但我想让这个 prolog 文件成为一个独立的 EXE 文件 但我不知道如何去做 我正在使用 swi prolog 来查阅该文件 我需要使用 swi prolog 使该程序可执行的分步教程 我
  • 无法在 PHP 中使用 exec() 运行 .exe 文件

    我正在尝试使用 exe 文件来执行计算并将输出传递到 PHP 中 我使用 C 制作了一个 Hello World exe 文件 但无法让 PHP 执行它 如果我从 CMD 运行此命令 我会得到正确的输出 C path file exe 但如
  • 将 Node.js 项目转换为可执行文件

    我已经创建了Node js项目 但是我的客户要求是获取它的exe文件 以便他可以在不安装node的情况下运行它 请帮助我将 node js 项目创建到其可执行文件 即 exe 文件 中 我认为您已经解决了您的问题 但问题未标记为已解决 你可
  • JavaFX 单实例应用程序

    尝试做到这一点 当用户 关闭 程序时单击所有退出按钮 这样就不再有托盘图标 我调用 Platform setImplicitExit false 所以程序仍然在后台运行 我正在尝试学习如何做到这一点 以便当用户重新单击运行 jar 的 ex
  • MapViewOfFile 返回什么? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么加载程序无法加载到所需位置 https stackoverflow com questions 9698496 why wont the loader load at the desired l
  • Windows 上的 Qt5 部署

    我一直在研究如何将我的桌面应用程序从 Qt5 Creator 部署到一组 dll 和一个 exe 记录的过程似乎极其复杂 http qt project org doc qt 5 0 qtdoc deployment windows htm
  • 如何在 SSISDB 中将可执行错误公开为消息

    我们当前正在从作为每晚批处理作业的一部分运行的 SSIS 执行进程任务调用使用 python 构建的可执行文件 这一切都工作正常 但是当可执行文件失败时 只会引发非常基本的通用错误消息 而不会引用真正的底层错误 当通过命令行运行可执行文件时
  • MSI 安装程序的可执行文件

    我有一个文件夹 其中包含两个 EXE 文件和许多其他文件 如何将其转换为 MSI 安装程序或某种自解压安装程序以便安装Main exe到 Windows 中的程序 第二个EXE文件是因为两个EXE文件之间的通信 我更希望它能够包含 桌面快捷
  • 如何在nsis中获取其他应用程序的退出代码

    在我的 nsi 文件中 我正在调用ExecWait INSTDIR application exe 0 在 application exe 中 我返回成功和失败的退出代码 如何捕获 nsi 文件中的那些退出代码 如果执行 ExecWait
  • Python 2.6:从 Windows 控制台应用程序读取数据。 (操作系统?)

    我有一个返回一些文本的 Windows 控制台应用程序 我想在 Python 脚本中读取该文本 我尝试使用 os system 来阅读它 但它无法正常工作 import os foo os system test exe 假设 test e
  • 如何在 Python 中运行 .exe 文件

    我正在尝试在 python2 7 中运行 exe 文件 我已经尽了一切努力来搜索它 这是我尝试过的一些代码 subprocess Popen r C Programs Files Internet Explorer iexplore exe
  • 在 EXE 文件末尾写入字节安全吗?

    我听说如果我们在 EXE 文件末尾附加一些字节 它仍然可以正常工作 在所有情况下都是如此吗 这是一种安全的方法吗 我打算使用程序执行文件中的数据来编写演示 因此它可以是安全的 至少对普通用户而言 并且我不必将数据存储在其他地方 这是不可能用
  • 如何从 VB-6 旧应用程序中启动屏幕键盘程序

    我正在尝试从 Windows 10 32 或 Windows 10 64 位计算机上的 VB 6 应用程序中 shell osk exe 过去我们只是简单地使用 Private Sub Command1 Click Dim strTemp
  • 将.exe项目转换为类库

    我在 Visual Studio 2010 Ultimate 中有一个半大型 C exe 项目 我想将其转换为 DLL 类库 有没有一种简单的方法可以做到这一点 而不涉及创建新的类库项目 预先感谢 项目 gt 属性 gt 应用程序选项卡 将

随机推荐

  • Python resquests使用multipart/form-data格式上传参数或文件

    参考 xff1a 井蛙不可语于海 一 需要注意的坑 在resquests中不用加上Content Type xff0c 否则请求无法成功 xff0c 它会有一个默认值 二 代码示例 span class token keyword try
  • QT Expression:_BLOCK_TYPE_IS_VALID断言错误

    一 最近使用QT xff0c 写了一个小小的Demo xff0c 在关闭窗口时总是报错 二 原因 1 Qt初始化时有两种构造方式 xff1a span class token comment xff08 1 xff09 将窗口对象定义在栈上
  • QT 解压tar.gz格式的压缩包

    一 tar gz 以 tar gz为后缀的文件是一种压缩文件 xff0c 在Linux下常见 一般情况下都是源代码的安装包 它其实是先打包成tar格式的文件 xff0c 然后利用gzip压缩技术来压缩 这两天我想在windows下去解压这种
  • QT error C2220: 警告被视为错误 - 没有生成“object”文件

    一 错误代码图 下面的代码会造成这个问题 span class token keyword void span CustomWindow span class token operator span span class token fun
  • QT 复制、粘贴系统剪贴板

    一 复制 可以复制文字 图片到系统剪贴板 xff0c 图片最好将QImage格式复制到剪贴板 xff0c QPixmap要比QImage慢 xff0c 因为QPixmap需要首先转换为QImage格式 QClipboard span cla
  • QT 最常用字符串操作

    文章目录 96 96 QString 96 96 一 查找字符串位置二 截取指定位置的字符串三 判断字符串是否含有空字符四 判断字符串是否为空值五 指定位置插入字符串六 判断是否以某个字符串开始或结尾七 删除空字符八 排序字符串九 切割字符
  • QT 计算字符串、文件md5值

    一 计算字符串md5值 xff08 1 xff09 QCryptographicHash xff0c 提供一种生成加密散列的方法 xff0c Hash叫作散列表 xff0c 也叫作哈希 xff08 2 xff09 当前支持MD4 MD5 S
  • Ubuntu系统装上了以后应该干什么?

    我列出一个Linux Ubuntu装机单 xff1a 可以直接在桌面上新建文本文档 xff0c 复制粘贴我的装机命令单 xff0c 然后文本文档后缀改成sh xff0c 再在属性里设置 允许以程序执行文件 xff0c 就可以了 装机单 xf
  • QT 创建、修改桌面快捷方式,固定任务栏快捷方式

    一 获取系统文件路径 我们用到DesktopLocation和AppDataLocation 二 创建与修改快捷方式路径 修改可以直接将创建的快捷方式覆盖到指定的路径中即可 xff08 1 xff09 桌面快捷方式 QString desk
  • QT UTF-8转GBK编码

    在Qt5中使用Unicode来存储 操作字符串 xff0c windows下是GBK编码 UTF 8 转 GBK QString appLink span class token operator 61 span span class to
  • QT 删除一周前的日志

    1 现象 本地客户端log越来越大 xff0c 写入速度也会变慢 xff0c 所以在启动时进行清理 2 日志文件名 3 代码 span class token keyword void span span class token funct
  • Python脚本转换为exe程序

    一 安装pyinstaller pip install pyinstaller 二 打包程序 xff08 pyinstaller exe在python下的 Scripts 文件夹下 xff09 python pyinstaller exe
  • QT 计算文件夹总大小并转换为B、KB、M、G

    一 计算文件夹总大小 qint64 span class token function fileSize span span class token punctuation span span class token keyword con
  • QT 自定义滑动条(上方有实时方框显示数值,且带有刻度值)

    文章目录 一 效果图二 原理三 示例代码四 还可以使用系统stylesheet语法来自定义滑动条五 设置小数值 一 效果图 这种滑动条是控件所拼接而成 二 原理 xff08 1 xff09 LectureCorrectBoxSliderFo
  • QT 流式布局水平插入小部件(可自动换行)

    一 类似于这样的效果图 由于对象不确定有多少人 xff0c 所以使用代码 xff0c 在布局中添加部件 xff0c 如果一行撑不下 xff0c 则自动添加到第二行 二 使用FlowLayout FlowLayout是一个自定义布局类 xff
  • QT 计算平均分(向上取整或向下取整)

    一 场景 需要计算四门成绩的平均分 xff0c 并向上取整 span class token keyword double span temp span class token operator 61 span span class tok
  • QT 工作遇到的小问题

    文章目录 1 QT中清空布局中所有小控件2 纯代码添加QPushButton xff0c 设置样式checked不生效3 stackedWidget必须在初始化时 xff0c 设置当前页 xff0c 否则有可能顺序会打乱 xff0c 画面顺
  • QT QPushButton中设置样式出现异常凹凸的问题

    一 设计图 两个互斥的button xff0c 然后我只想设置下边框的颜色 二 设置样式后出现凸起 xff08 太丑了 xff09 QPushButton btnMember span class token punctuation spa
  • 为什么Ubuntu系统安装上以后,分辨率低,屏幕不清晰?安装NVIDIA显卡驱动的方法。

    sudo passwd su ubuntu drivers autoinstall sudo reboot now 询问密码的时候全都输入你安装系统的时候设置的密码 中间停住 xff0c 有下面这个情况 xff0c 输入y xff0c 然后
  • QT 两个exe之间通信

    一 通信方式 通过windowAPI xff0c SendMessage进行通信 xff0c 等待结果返回 xff0c 是一种同步的方式 PostMessage是将消息放入消息队列中 xff0c 立即返回 xff0c 是一种异步的方式 我采