Python捕捉和模拟鼠标事件的方法


Posted in Python onJune 03, 2015

本文实例讲述了Python捕捉和模拟鼠标事件的方法。分享给大家供大家参考。具体分析如下:

这个假期玩了不少galgame,不过有些很老的游戏没有自动运行模式,点击鼠标又太伤按键了,于是想把滚动鼠标滚轮映射为点击鼠标。

网上搜了一下,没发现什么现成的软件,而按键精灵又太重量级了,于是考虑干脆自己用Python写个算了。

这里需要把PyHook和PyWin32都装上(建议下exe版,免得安装时各种蛋疼)。

翻了翻教程,发现实现起来很简单:

# -*- coding: utf-8 -*- 
import pythoncom, pyHook  
def OnMouseEvent(event): 
  print 'MessageName:',event.MessageName 
  print 'Message:',event.Message 
  print 'Time:',event.Time 
  print 'Window:',event.Window 
  print 'WindowName:',event.WindowName 
  print 'Position:',event.Position 
  print 'Wheel:',event.Wheel 
  print 'Injected:',event.Injected 
  print '---' 
  # 返回 True 可将事件传给其它处理程序,否则停止传播事件 
  return True 
# 创建钩子管理对象 
hm = pyHook.HookManager() 
# 监听所有鼠标事件 
hm.MouseAll = OnMouseEvent # 等效于hm.SubscribeMouseAll(OnMouseEvent) 
# 开始监听鼠标事件 
hm.HookMouse() 
# 一直监听,直到手动退出程序 
pythoncom.PumpMessages()

这个例子程序捕捉了所有的鼠标事件,实际上我只需要捕捉向下滚动滚轮的事件即可。翻了下文档,对应的是MouseWheel,之后只要判断event.Wheel是否为-1即可。

最后就是触发鼠标点击了,这就需要用到win32api.mouse_event()了,发送一个按下鼠标左键的事件,再发送弹起的事件,就完成一次单击了。

最终代码如下:

# -*- coding: utf-8 -*- 
import pythoncom 
import pyHook 
import time 
import win32api 
import win32con 
def onMouseWheel(event): 
  if event.Wheel == -1: 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) 
    time.sleep(0.05) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0) 
  return True 
hm = pyHook.HookManager() 
hm.MouseWheel = onMouseWheel 
hm.HookMouse() 
pythoncom.PumpMessages()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python client使用http post 到server端的代码
Feb 10 Python
在Python程序中进行文件读取和写入操作的教程
Apr 28 Python
Windows中安装使用Virtualenv来创建独立Python环境
May 31 Python
python使用mysql数据库示例代码
May 21 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python进行文件对比的方法
Dec 24 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
python如何进行矩阵运算
Jun 05 Python
python 如何将office文件转换为PDF
Sep 22 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
Python while、for、生成器、列表推导等语句的执行效率测试
Jun 03 #Python
Python fileinput模块使用实例
Jun 03 #Python
以windows service方式运行Python程序的方法
Jun 03 #Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 #Python
python中list常用操作实例详解
Jun 03 #Python
python中argparse模块用法实例详解
Jun 03 #Python
Python中的推导式使用详解
Jun 03 #Python
You might like
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
2021年最新CPU天梯图
2021/03/04 数码科技
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python输出带颜色的字符串实例
2017/10/10 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
会计大学生职业生涯规划书范文
2014/01/13 职场文书
我的梦想演讲稿
2014/04/30 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
图文详解matlab原始处理图像几何变换
2021/07/09 Python
Oracle中日期的使用方法实例
2022/07/07 Oracle