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中的MongoDB基本操作:连接、查询实例
Feb 13 Python
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
python实现中文分词FMM算法实例
Jul 10 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
python2 与 python3 实现共存的方法
Jul 12 Python
Python中Numpy ndarray的使用详解
May 24 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python class的继承方法代码实例
Feb 14 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
用python爬虫批量下载pdf的实现
Dec 01 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实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
2017/08/04 PHP
PHP7变量处理机制修改
2021/03/09 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
js闭包的用途详解
2014/11/09 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
Js apply方法详解
2017/02/16 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python自定义线程池实现方法分析
2018/02/07 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python调用支付宝支付接口流程
2019/08/15 Python
python 多维高斯分布数据生成方式
2019/12/09 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
土木工程应届生求职信
2013/10/31 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
新教师工作感言
2014/02/16 职场文书
学生评语集锦
2015/01/04 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
加薪通知
2015/04/25 职场文书
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python