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循环语句中else的用法总结
Sep 11 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
用Python设计一个经典小游戏
May 15 Python
Python中表示字符串的三种方法
Sep 06 Python
Flask解决跨域的问题示例代码
Feb 12 Python
python爬虫获取百度首页内容教学
Dec 23 Python
python实现猜数字游戏
Mar 25 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python实现数字炸弹游戏
Jul 17 Python
python 5个顶级异步框架推荐
Sep 09 Python
详解python算法常用技巧与内置库
Oct 17 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 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
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
javascript getElementsByTagName
2011/01/31 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
Python能做什么
2020/06/02 Python
浅谈Python中的模块
2020/06/10 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
单位承诺书格式
2014/05/21 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
2015年试用期工作总结
2014/12/12 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
怎样写好工作计划
2019/04/10 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫