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 相关文章推荐
图文详解WinPE下安装Python
May 17 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
Flask框架配置与调试操作示例
Jul 23 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
python实现上传文件到linux指定目录的方法
Jan 03 Python
python爬虫实现获取下一页代码
Mar 13 Python
python Matplotlib模块的使用
Sep 16 Python
Python3如何使用tabulate打印数据
Sep 25 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
python 爬取天气网卫星图片
Jun 07 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
phpmyadmin的#1251问题
2006/11/25 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
php-fpm中max_children的配置
2019/03/15 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
javascript编写实用的省市选择器
2015/02/12 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
关于python字符串方法分类详解
2019/08/20 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
xxx同志考察材料
2014/02/07 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
工作经历证明书范文
2014/11/02 职场文书
父亲婚礼答谢词
2015/01/04 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
加薪申请报告范本
2015/05/15 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
React实现动效弹窗组件
2021/06/21 Javascript
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
DSP接收机前端设想
2022/04/05 无线电
WinServer2012搭建DNS服务器的方法步骤
2022/06/10 Servers