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实现拼接多张图片的方法
Dec 01 Python
栈和队列数据结构的基本概念及其相关的Python实现
Aug 24 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 Python
python str字符串转uuid实例
Mar 03 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
python简单利用字典破解zip文件口令
Sep 07 Python
Python采集壁纸并实现炫轮播
Apr 30 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身份证号码检查类实例
2015/06/18 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
2016/10/11 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
使用grappelli为django admin后台添加模板
2014/11/18 Python
pytorch permute维度转换方法
2018/12/14 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
个人自我鉴定
2013/11/07 职场文书
大学生标准推荐信范文
2013/11/25 职场文书
小学六年级学生评语
2014/04/22 职场文书
师范生求职信
2014/06/14 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
公司给客户的感谢信
2015/01/23 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android
Python测试框架pytest高阶用法全面详解
2022/06/01 Python