位置: IT常识 - 正文

python怎么获取键盘监听(python获取值对应的键)

编辑:rootadmin

推荐整理分享python怎么获取键盘监听(python获取值对应的键),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python怎么通过键找值,python怎么获取键盘输入,python怎么获取键盘的按键,python怎么获取键盘的按键,python获取键盘按键键值,python获取键值,python获取键盘按键键值,python怎么获取键盘输入,内容如对您有帮助,希望把文章链接给更多的朋友!

python获取键盘监听的方法是:1、使用“pip install pypiwin32”命令安装pypiwin32;2、用win32con的WH_KEYBOARD_LL属性设置监听系统键盘事件。

python怎么获取键盘监听(python获取值对应的键)

我们可以利用windows提供的api函数来实现对系统键盘事件和鼠标事件的监听,主要利用的是SetWindowsHookEx函数,这个函数可以允许调用者传入一个钩子函数也叫回调函数,当指定的事件发生时,你

传入的函数就会被触发,有些事件是进程级的,有些事件是系统级的,这里我们用WH_KEYBOARD_LL来监听系统键盘事件,用WH_MOUSE_LL来监听鼠标事件,注意不是WH_KEYBOARD,使用WH_KEYBOARD是无法监听到外部

程序的事件的,这个可以在windows官方文档里面看到说明,要用WH_KEYBOARD来监听系统键盘必须写dll去实现。

因为用到了一些宏定义在win32con里面已经有了,所以需要安装一下pypiwin32,当然如果你将这些宏定义写在自己的文件中,那么就不用安装pypiwin32了。

输入:pip install pypiwin32 安装pypiwin32。

#coding=utf-8fromctypesimport*fromctypesimportwintypesimportwin32conSetWindowsHookEx=windll.user32.SetWindowsHookExAUnhookWindowsHookEx=windll.user32.UnhookWindowsHookExCallNextHookEx=windll.user32.CallNextHookExGetMessage=windll.user32.GetMessageAGetModuleHandle=windll.kernel32.GetModuleHandleW#保存键盘钩子函数句柄keyboard_hd=None#保存鼠标钩子函数句柄mouse_hd=NoneclassKBDLLHOOKSTRUCT(Structure):_fields_=[('vkCode',c_int),('scanCode',c_int),('flags',c_int),('time',c_int),('dwExtraInfo',c_uint),('',c_void_p)]classPOINT(Structure):_fields_=[('x',c_long),('y',c_long)]classMSLLHOOKSTRUCT(Structure):_fields_=[('pt',POINT),('hwnd',c_int),('wHitTestCode',c_uint),('dwExtraInfo',c_uint),]defwait_for_msg():msg=wintypes.MSG()GetMessage(msg,0,0,0)defkeyboard_pro(nCode,wParam,lParam):"""函数功能:键盘钩子函数,当有按键按下时此函数被回调"""ifnCode==win32con.HC_ACTION:KBDLLHOOKSTRUCT_p=POINTER(KBDLLHOOKSTRUCT)param=cast(lParam,KBDLLHOOKSTRUCT_p)print(param.contents.vkCode)returnCallNextHookEx(keyboard_hd,nCode,wParam,lParam)defstart_keyboard_hook():"""函数功能:启动键盘监听"""HOOKPROTYPE=CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))pointer=HOOKPROTYPE(keyboard_pro)keyboard_hd=SetWindowsHookEx(win32con.WH_KEYBOARD_LL,pointer,GetModuleHandle(None),0)wait_for_msg()defstop_keyboard_hook():"""函数功能:停止键盘监听"""UnhookWindowsHookEx(keyboard_hd)defmouse_pro(nCode,wParam,lParam):"""函数功能:鼠标钩子函数,当有鼠标事件,此函数被回调"""ifnCode==win32con.HC_ACTION:MSLLHOOKSTRUCT_p=POINTER(MSLLHOOKSTRUCT)param=cast(lParam,MSLLHOOKSTRUCT_p)#鼠标左键点击ifwParam==win32con.WM_LBUTTONDOWN:print("左键点击,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))elifwParam==win32con.WM_LBUTTONUP:print("左键抬起,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))elifwParam==win32con.WM_MOUSEMOVE:print("鼠标移动,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))elifwParam==win32con.WM_RBUTTONDOWN:print("右键点击,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))elifwParam==win32con.WM_RBUTTONUP:print("右键抬起,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))returnCallNextHookEx(mouse_hd,nCode,wParam,lParam)defstart_mouse_hook():"""函数功能:启动鼠标监听"""HOOKPROTYPE=CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))pointer=HOOKPROTYPE(mouse_pro)mouse_hd=SetWindowsHookEx(win32con.WH_MOUSE_LL,pointer,GetModuleHandle(None),0)wait_for_msg()defstop_mouse_hook():"""函数功能:停止鼠标监听"""UnhookWindowsHookEx(mouse_hd)

打开一个txt文件,在里面输入文字,

importHookApiif__name__=='__main__':HookApi.start_keyboard_hook()

本文链接地址:https://www.jiuchutong.com/zhishi/304111.html 转载请保留说明!

上一篇:dedecms模板下载中增加dede图集内容图片下载功能(dedecms官网)

下一篇:java泛型算法如何实现(java 泛型方法)

  • 总账会计的职责目标设定
  • 个税申报的收入是应发还是实发
  • 某煤矿将自采原煤用于投资的业务应缴纳资源税
  • 小规模多计提增值税税率
  • 税盾是怎么产生的
  • 要约和承诺有法律效力吗
  • 滴滴电子普通发票怎么抵扣
  • 经营活动现金流量公式
  • 购买汽车的保健因素
  • 小型微利企业预缴
  • 员工全额承担社保账务怎么做?
  • 房地产公司拆迁部岗位职责
  • 现金折扣销售退回的会计分录
  • 飞机票改签费用怎么算1000块
  • 营改增医院增值税
  • 第三方代缴社保能查到原单位吗
  • 分公司帮总公司付款怎么做分录
  • 企业发票入账冲销流程
  • 去年的定额的发票可以报销吗?
  • 非独立核算分公司个税怎么申报
  • 房屋租赁发票需要备注吗
  • 2017年7月1日开始实施的税法新规
  • 商业承兑汇票贴现转让
  • 租赁收入账务处理
  • 金税盘怎么增加复核人
  • 外购商品用于招待怎么做账
  • 电子汇票如何使用
  • 诊所购药有差价怎么办
  • 小规模申报个税手续费返还在哪填写信息
  • 企业增加的留存收益计入
  • 物流公司增项
  • 交强险保单被保险人写谁都行?
  • 永恒之蓝是
  • 应付工资薪酬期末应该为0吗
  • linux日期格式
  • php实现分页功能的方法
  • 股权转让有哪些股
  • 进程中svchost
  • php imagestring
  • ISBMgr.exe - ISBMgr是什么进程 有什么作用
  • 卡洛里山脉
  • 如何使用nodejs
  • 非营利组织增值税
  • php获取字符串中的指定字符
  • 星空下的灯塔作文
  • 废品损失属于产品成本项目吗
  • 卸载的应用怎么找回来
  • 其他收益最后转入哪个科目
  • bcdboot命令怎么用
  • 金蝶软件资产负债表公式设置
  • 增值税发票作废后怎么处理
  • spring 门面模式
  • 社保工伤退回分录
  • 原材料盘亏属于自然损耗
  • sql2008数据库存放位置
  • Advanced SQL Injection with MySQL
  • 包装物押金怎么计算
  • 活动费用在哪个科目
  • 不动产计提折旧时间
  • 企业亏损为什么还继续
  • 公司注销应付账款要为零吗
  • 房地产开发公司是做什么的
  • 公司的软件服务器设置什么意思啊
  • 母公司划拨土地给全资子公司需要上税吗?
  • 收款凭证和付款凭证是出纳人员收款、付款的依据
  • sql server使用的是什么逻辑模型
  • iphone中的照片如何导入mac
  • dvd rom drive bbs priorities
  • 为大家详细介绍英语
  • win10家庭版关闭
  • win10怎么查看磁盘是固态还是机械
  • linux系统查询进程
  • javascript快速入门
  • jquery怎么写
  • 使用二氧化碳灭火器时人应该站在什么位置
  • python写一个复制文件的程序
  • android使用红杏代理更新sdk
  • 广东交通定额发票在哪开
  • 税务ukey登录界面
  • 铁路运费发票可以抵扣几个点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设