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实现simhash算法实例
Apr 25 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
使用Python3内置文档高效学习以及官方中文文档
May 19 Python
Django接收自定义http header过程详解
Aug 23 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
OpenCV-Python实现轮廓的特征值
Jun 09 Python
Python requests用法和django后台处理详解
Mar 19 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
PHP asXML()函数讲解
2019/02/03 PHP
Javascript 作用域使用说明
2009/08/13 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
python计算最大优先级队列实例
2013/12/18 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
教师节促销活动方案
2014/02/14 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
安全标语大全
2014/06/10 职场文书
会计工作检讨书
2015/02/19 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
环保主题班会教案
2015/08/13 职场文书
礼貌问候语大全
2015/11/10 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS