Qt之进程间通信(Windows消息)
2023-09-11 14:19:16 时间
通过上一节的了解,我们可以看出进程通信的方式很多,今天分享下如何利用Windows消息机制来进行不同进程间的通信。
包含所需库,定义发送的自定义类型、接收消息的窗体标题。自定义类型可以处理消息过多情况下,对消息的区分,如果不需要也可以去掉。
点击按钮,进行消息发送。里面的do{…}while用来忽略本窗口,当然自身也可以接受自身的消息。
LPWSTR path = (LPWSTR)c_strTitle.utf16(); //path = L"SendMessage" hwnd = ::FindWindowW(NULL, path); //} while (hwnd == (HWND)effectiveWinId()); // 忽略自己 if (::IsWindow(hwnd)) QString filename = QStringLiteral("进程通信-Windows消息"); QByteArray data = filename.toUtf8(); COPYDATASTRUCT copydata; copydata.dwData = CUSTOM_TYPE; // 用户定义数据 copydata.lpData = data.data(); //数据大小 copydata.cbData = data.size(); // 指向数据的指针 HWND sender = (HWND)effectiveWinId(); ::SendMessage(hwnd, WM_COPYDATA, reinterpret_cast WPARAM (sender), reinterpret_cast LPARAM ( copydata)); }
这一步很重要,必须与上一步的c_strTitle保持一致,否则会找不到窗体。自定义类型CUSTOM_TYPE也必须保持一致,进行过滤。
COPYDATASTRUCT *cds = reinterpret_cast COPYDATASTRUCT* (param- lParam); if (cds- dwData == CUSTOM_TYPE) QString strMessage = QString::fromUtf8(reinterpret_cast char* (cds- lpData), cds- cbData); QMessageBox::information(this, QStringLiteral("提示"), strMessage); *result = 1; return true; return QWidget::nativeEvent(eventType, message, result); }
Windows进程间通信的各种方法 原文:Windows进程间通信的各种方法进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。
相关文章
- [Qt教程] 第12篇 2D绘图(二)渐变填充
- Qt之QHostInfo获取主机信息
- Qt-qt creator 运行 出现 "can not open .... jom for write 解决方案
- Qt之进程间通信之Windows消息(nativeEvent)
- QT-Qt中MediaPlay的使用,播放视频或MP4
- Windows 由于无法验证发布者,windows阻止控件安装怎么办
- s3c2410上搭建QT/Embedded4.8.5开发环境(四)--安装intel-x86 X11平台qt库qt-everywhere-opensource-src-4.8.5
- s3c2410上搭建QT/Embedded4.8.5开发环境(七)--命令行开始第一个Qt程序
- Qt Windows 环境搭建
- Qt 进程守护程序(windows、linux)
- Qt 读取csv文件并且绘制折线图
- Qt TCP/IP(多客户端连接服务器)多个客户端同时登陆的聊天室示例
- Qt 关于QT_BEGIN_NAMESPACE宏的作用
- Qt动态如何添加
- Qt线程的生命周期
- Qt开发-QT Quick
- C++Qt开发——阻止系统休眠方法
- 第22篇 基础 (二十二)手把手教学 Qt 操作 ini 文件(详解)
- windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件
- ubuntu安装qt
- How_to_setup_Qt_and_openCV_on_Windows
- qt 判断是否debug
- QT里实现Windows电脑三种关机方法
- 【错误记录】Windows 控制台程序编译报错 ( WINDOWS.H already included. MFC apps must not #include <Windows.h> )
- qt交叉编译报错::-1: error: The Qt version is invalid: Qt version is not properly installed,please run make
- Qt生成和调用动态库dll,和静态库.a(windows和linux通用)