[PyQt5] 窗口接收WM_COPY消息

news2024/11/20 15:34:36

#本程序是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 MSG

WM_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.coloradmin.cn/o/1720262.html

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

相关文章

低代码与人工智能的深度融合:行业应用的广泛前景

引言 在当今快速变化的数字化时代,企业面临着越来越多的挑战和机遇。低代码平台和人工智能技术的兴起,为企业提供了新的解决方案,加速了应用开发和智能化转型的步伐。 低代码平台的基本概念及发展背景 低代码平台是一种软件开发方法&#x…

03-树1 树的同构(浙大数据结构PTA习题)

03-树1 树的同构 分数 25 作者 陈越 单位 浙江大学 给定两棵树 T1​ 和 T2​。如果 T1​ 可以通过若干次左右孩子互换就变成 T2​,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G…

案例实践 | 基于长安链的首钢供应链金融科技服务平台

案例名称-首钢供应链金融科技服务平台 ■ 建设单位 首惠产业金融服务集团有限公司 ■ 用户群体 核心企业、资金方(多为银行)等合作方 ■ 应用成效 三大业务场景,共计关联29个业务节点,覆盖京票项目全部关键业务 案例背景…

Pipecat: 创建语音对话agent的开源框架,支持多模态!

项目简介 pipecat 是用于构建语音(和多模态)对话代理的框架。诸如私人教练、会议助理、儿童讲故事玩具、客户支持机器人、摄入流程和尖刻的社交伙伴。 看看一些示例应用: 语音代理入门 您可以开始在本地计算机上运行 Pipecat,然…

相同的树(oj题)

一、题目链接https://leetcxode-cn.com/problems/same-tree/ 二、题目思路 遍历整颗树,判断两棵树的每个位置的结点都相同。 每个结点的左右孩子结点都要综合判断 三、题解代码 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//如果两颗树的根结点…

如何评价GPT-4o?GPT-4o和ChatGPT4.0的区别是啥呢?

如何评价GPT-4o? GPT-4o代表了人工智能领域的一个重要里程碑,它不仅继承了GPT-4的强大智能,还在多模态交互方面取得了显著进步。以下是几个方面的分析: 技术特点 多模态交互能力:GPT-4o支持文本、音频和图像的任意组合输入与输出…

Windows 权限维持之 Shift 后门

正常情况下我们连按五次 shift 键会弹出粘滞键 粘滞键是电脑使用中的一种快捷键,一般连按五次 shift 会出现粘滞键提示,粘滞键是专为同时按下两个或多个键有困难的人而设计的, 粘滞键开启后,可以先按一个键位,再按另一…

利用数组求出费波纳西数列的前100个值,随即输出四个值

利用数组求出费波纳西数列的前100个值&#xff0c;随即输出四个值 #include <stdio.h> int main () {double a1,b1; int i; for(i1;i<100;i) { printf("%-35.0lf%-35.0lf",a,b);if(i%20)printf("\n");aab;bba; } return 0; } 运行图

【Linux-阻塞,非阻塞,异步】

Linux-阻塞&#xff0c;非阻塞&#xff0c;异步 ■ Linux-阻塞-非阻塞 IO-异步■ Linux-阻塞IO■ 阻塞IO简介■ open■ 等待队列■ 示例一&#xff1a;APP阻塞IO读取进入睡眠后-等待队列唤醒进程■■ ■ Linux-非阻塞IO■ 非阻塞IO简介■ open■ 轮询■ 1、select 函数■ 2、po…

分享一个在linux中运行通义千问的方法

分享一个在linux中和通义千问交互的方法 效果展示: 整体步骤 分享一个在linux中和通义千问交互的方法效果展示:一、在阿里云appflow控制台创建连接流1、通过以下地址,在灵积平台创建个API-KEY,用于通义千问的连接凭证2、点击连接流-创建连接流3、第一步选择webhook4.第二步…

软件定义汽车,通信连接世界 | 2024汽车软件与通信大会开幕

5月28日-30日&#xff0c;在江苏省工业和信息化厅、智能汽车安全技术全国重点实验室指导下&#xff0c;由中国中检所属中国汽车工程研究院股份有限公司&#xff08;下称&#xff1a;中国汽研&#xff09;主办&#xff0c;中汽院(江苏)汽车工程研究院有限公司承办的2024汽车软件…

如何让大模型在智能时代背景下更加先进:一种基于时代特征的探讨

随着人工智能技术的飞速发展&#xff0c;大型模型如深度学习网络和强化学习算法已经在各个领域取得了显著的成果。然而&#xff0c;随着应用场景的不断扩展和复杂化&#xff0c;如何让这些大模型在智能时代背景下更加先进&#xff0c;已经成为了一个亟待解决的问题。本文将从以…

ESP32开发板定义硬串口

ESP32 的默认串口 UART序号Rx PINTx PIN是否可用UART0GPIO3GPIO1是UART1GPIO9GPIO10是&#xff0c; 但与SPI flash相关联需要重新定义UART2GPIO16GPIO17是 下面我们定义2、4GPIO引脚为串口1&#xff1a; #include <HardwareSerial.h> HardwareSerial S1(1); 初始化 …

【微服务】docker部署redis,一主二从三哨兵,读写分离

配置redis读写分离 3台虚拟机 创建目录用于挂载 mkdir -p /root/redis/{conf,data,logs} #master配置文件 bind 0.0.0.0 //任何ip都能访问 port 6379 //redis端口号 logfile "/data/redis.log" //日志文件存放位置&#xff0c;启动redis之前设置为空&#xff…

压测工具Jmeter的使用

一、安装 下载地址&#xff1a; 国外地址&#xff1a;jmeter.apache.org&#xff08;下载会很慢&#xff0c;建议使用国内地址&#xff09; 国内地址&#xff1a;apache-jmeter-binaries安装包下载_开源镜像站-阿里云 下载好进入bin文件下&#xff0c;双击jmeter.bat 打开…

小百科|软考(中、高项)是什么?考试难吗?考试时间是什么时候?

证书背景 软考全称是计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;简称“软考”。它是由我国两个国家级部门人力资源和社会保障部与工业和信息化部共同举办的国家级考试。其中系统集成项目管理工程师是中级资格考试&#xff08;简称中项&#xf…

java多态——向下转型

引入 前面我尝试了一下这个代码 package b;public class main_ {public static void main(String[] args) {//向上转型&#xff0c;父类的引用转向了子类的father_ animalnew graduate();Object objnew graduate();System.out.println(animal.name);System.out.println(obj.n…

神经网络-------人工神经网络

一、什么是神经网络和神经元 人工神经网络&#xff08;英语&#xff1a;Artificial Neural Network&#xff0c;ANN&#xff09;&#xff0c;简称 神经网络&#xff08;Neural Network&#xff0c;NN&#xff09;或 类神经网络&#xff0c;是一种模仿生物神经网络&#xff08;…

一图了解【电子面拦截】接口

【电子面拦截】又可以成为快递拦截 商品还在运输途中&#xff0c;买家申请仅退款、想修改地址怎么办&#xff1f; 百递云API开放平台最新推出「电子面单拦截」接口&#xff0c;提供三种拦截类型&#xff0c;助力快速拦截处理在途包裹。 下图带您了解&#x1f447;

网络报文协议头学习

vxlan&#xff1a;就是通过Vxlan_header头在原始报文前面套了一层UDPIP&#xff08;4/6&#xff09;Eth_hdr 需求背景&#xff1a;VXLAN&#xff1a;简述VXLAN的概念&#xff0c;网络模型及报文格式_vxlan报文格式-CSDN博客 如果服务器作为VTEP&#xff0c;那从服务器发送到接…