[PyQt5] 窗口接收WM_COPY消息

#本程序是python qt5 创建的窗口,拦截外部消息给窗口发送的WM_COPY消息并显示出来。一般是用来作为窗口之间的通讯机制之一。

python文件如下:qt5拦截消息

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow ,QTextEdit,QPushButton
import ctypes,array,struct
from ctypes.wintypes import MSGWM_COPY = 0X004A; #原始window消息全局定义def btn0_clicked():print("#button_0 clicked!")class COPYDATASTRUCT(ctypes.Structure):_fields_ = [('dwData', ctypes.wintypes.LPARAM),('cbData', ctypes.wintypes.DWORD),('lpData', ctypes.c_void_p)]
PCOPYDATASTRUCT = ctypes.POINTER(COPYDATASTRUCT)class MainWindow(QMainWindow):def nativeEvent(self, eventType, msg):msg_come = MSG.from_address(msg.__int__())#print("got msg_id:",msg_come.message);if msg_come.message == WM_COPY:#print("Recv copy message.")PCOPYDATASTRUCT = ctypes.POINTER(COPYDATASTRUCT)pCDS = ctypes.cast(msg_come.lParam, PCOPYDATASTRUCT)str=ctypes.string_at(pCDS.contents.lpData)print(str.decode('utf-8'))     edit1.setPlainText(str.decode('utf-8'))return False,0  # 表示事件被处理return super().nativeEvent(eventType, msg) if __name__ == '__main__':app = QApplication([])wnd = MainWindow()wnd.setWindowTitle("#XCtrl#")btn0 = QPushButton("Button0", wnd)btn0.clicked.connect(btn0_clicked) edit1 = QTextEdit(wnd)edit1.setGeometry(0, 40, 200, 100)wnd.setGeometry(50, 50, 250, 250)wnd.show()app.exec_()

cpp端发送WM_COPY消息 :

void LogBox(char* str, int len)
{COPYDATASTRUCT cpd;cpd.cbData = len;cpd.lpData = (void*)str;//类名可以通过Spy++搜索对应窗口得到HWND hWndRcv = ::FindWindowA("Qt5152QWindowIcon", "#XCtrl#");if (hWndRcv){::SendMessage(hWndRcv, WM_COPYDATA, (WPARAM)len, (LPARAM)&cpd);}return;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32-14-FSMC_LCD

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU 文章目录 1. 显示器分类2. LCD简…

掌握 NestJS 10.x:从零开始构建高效可扩展的服务器端应用详解

NestJS 是一个用于构建高效、可扩展的 Node.js 服务端应用的框架,基于 TypeScript 构建,并且受 Angular 的启发,提供了模块化、易测试、易维护的架构。NestJS 10.x 引入了一些新特性和改进,进一步提升了开发体验。本文将详细介绍如…

Vue:网络请求axios

Axios 是一个基于 Promise 的网络请求库。 安装 npm install axios引入 <script setup> import axios from axios </script>常用 API axios.get(url[, config]) axios.get(/user,{params: {id: 1234,} }) .then(response > console.log(response)) .catch(…

协方差和协方差矩阵是什么

协方差矩阵&#xff08;Covariance Matrix&#xff09;是一个矩阵&#xff0c;它包含多个随机变量之间的协方差。 协方差是衡量两个随机变量如何一起变化的度量。 协方差矩阵在多元统计分析和机器学习中非常重要&#xff0c;特别是在处理多元正态分布时。 详细解释 协方差&am…

生态融合促发展 YashanDB与丰图科技完成兼容性认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB V23与丰图科技智域城市数字孪生平台顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;充分满足企事业单位在高性能、高可用性、高稳定性及高可控性方面的核心需求&…

比较好的Python课程

最近在学习夜曲编程的Python进阶课程——办公效率化&#xff1b;夜曲编程之前有推出一款学习Python的入门课程&#xff0c;在手机端和电脑端都可以学习的&#xff0c;如果没有时间在手机端学习都很好的。每节课程学习下来&#xff0c;可以收集到Python入门的知识卡片&#xff0…

Ansys Mechanical|组装 External Mechanical Model

Assembling Finite Element Models 上文中介绍了如何导入外部模型并将其组合到单个模型中的示例。 如果要将外部模型与Workbench环境中已有的一个或多个模型组合在一起&#xff0c;该如何操作&#xff1f;本文将介绍这个工作流程。 Ansys Mechanical支持Mechanical Model和Ex…

FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)

文章目录 一、模块结构二、赋值三、条件语句 一、模块结构 默认是wire类型&#xff0c;assign是定义功能。 上面这两个always都是并行 例化 二、赋值 有两种赋值“”和“<” “”是阻塞赋值&#xff0c;也就是从上到下&#xff0c;依次完成 “”是非阻塞赋值&#xff0c;…

开展FMEA,这些准备工作你做足了吗?

在产品研发和制造过程中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;是一项至关重要的质量工具。它能够帮助团队提前识别和预防潜在的产品失效问题&#xff0c;从而提升产品的可靠性和质量。然而&#xff0c;要想充分发挥FMEA的效用&#xff0c;充分的准备工作…

【机器学习】Samba-CoE实现高效推理部署

Samba-CoE&#xff1a;突破AI内存墙&#xff0c;实现高效推理部署 一、引言二、Samba-CoE系统概述三、突破AI内存墙的关键技术流数据流三层内存系统 四、Samba-CoE的推理部署与优化动态模型切换资源优化分配性能加速 五、代码实例与实现细节六、结语 一、引言 随着人工智能技术…

Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)

文章目录 专栏导读背景结果预览1、爬取页面分析2、通过返回数据发现适合利用lxmlxpath3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】4、完整代码总结 专栏导读 &#x1f525;&#x1f525;本文已收录于《Python基础篇爬虫》 &#x1f251;&#x1f251;本专栏专门…

Unreal Engine游戏引擎小白入门指南

哈喽呀&#xff0c;大家好&#xff0c;淼淼又来和大家见面啦&#xff0c;前几期跟大家分享了Unreal Engine游戏引擎的优势&#xff0c;这是一款强大而广泛使用的游戏引擎&#xff0c;由Epic Games开发&#xff0c;被用于开发各种类型的游戏&#xff0c;从独立游戏到AAA大作。对…

单点登录模式

1. 什么是单点登录 比如有一家公司&#xff0c;他业务线很多&#xff0c;有小游戏&#xff0c;有商城&#xff0c;有小程序&#xff0c;导致有很多系统&#xff0c;他不可能为每一个系统做一套用户管理&#xff0c;因为这些系统都是属于公司的&#xff0c;用户是相通的&#x…

AMD vs NVIDIA:2024年哪款显卡更适合你?

AMD与Nvidia之间的长期争论在显卡领域一直是一个热点话题&#xff0c;引发了游戏玩家和专业生产人士的热烈讨论。AMD和Nvidia都提供了种类丰富的 GPU&#xff0c;每款都有其优点和缺点。在本文中&#xff0c;我们将深入剖析选择AMD和Nvidia显卡时需要考虑的关键因素。 1.性能 …

RS485差分信号传输工作原理

RS485的一主多从工作方式主要基于其半双工通信特性。在这种配置中&#xff0c;一台设备作为主机&#xff0c;负责发送数据&#xff0c;而多台设备作为从机&#xff0c;接收并处理这些数据。每个从机在网络中必须具有唯一的地址&#xff0c;以便主机能够正确地识别和发送数据给特…

笔记-Python对象的属性

属性的__dict__系统 对象的属性可能来自于其类定义&#xff0c;叫做类属性(class attribute)。类属性可能来自类定义自身&#xff0c;也可能根据类定义继承来的。一个对象的属性还可能是该对象实例定义的&#xff0c;叫做对象属性(object attribute)。 对象的属性储存在对象的…

【JavaEE】多线程(1)

&#x1f386;&#x1f386;&#x1f386;个人主页&#x1f386;&#x1f386;&#x1f386; &#x1f386;&#x1f386;&#x1f386;JavaEE专栏&#x1f386;&#x1f386;&#x1f386; &#x1f386;&#x1f386;&#x1f386;计算机是怎么工作的&#x1f386;&#x1f3…

neutron学习小结

概述 基于yoga版本学习neutron&#xff0c;通过源码、官方文档、部署环境进行学习 neutron-dhcp-agent neutron.agent.dhcp_agent.main 创建server&#xff0c;调oslo_service launch server&#xff0c;最后实际调了server的start方法 neutron.service.Service.start Serv…

蓝桥杯--杂题

1.贪心&#xff1a; 我们先枚举哪个国家赢了&#xff0c;然后再建一个数组排序即可。 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long int n; int a[100010],b[100010],c[100010]; bool cmp(int a,int b) {return a>b…