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 代码
Sep 07 Python
Python内置模块ConfigParser实现配置读写功能的方法
Feb 12 Python
对python中raw_input()和input()的用法详解
Apr 22 Python
python简易远程控制单线程版
Jun 20 Python
对Python中Iterator和Iterable的区别详解
Oct 18 Python
python的time模块和datetime模块实例解析
Nov 29 Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
Python打印特殊符号及对应编码解析
May 07 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
Python中使用ipython的详细教程
Jun 22 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维护文件系统
2006/10/09 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
destoon数据库表说明汇总
2014/07/15 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
onpropertypchange
2006/07/01 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
django初始化数据库的实例
2018/05/27 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
在python中bool函数的取值方法
2018/11/01 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python 如何对logging日志封装
2020/12/02 Python
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
幼儿园教师培训制度
2014/01/16 职场文书
休学证明范本
2015/06/19 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python