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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python抽象类的新写法
Jun 18 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
Python比较2个时间大小的实现方法
Apr 10 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
python 为什么说eval要慎用
Mar 26 Python
Python中一些深不见底的“坑”
Jun 12 Python
Python简易计算器制作方法代码详解
Oct 31 Python
python实现的多任务版udp聊天器功能案例
Nov 13 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 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/11/26 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
python读取excel表格生成erlang数据
2017/08/26 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
利用python实现逐步回归
2020/02/24 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python使用xpath实现图片爬取
2020/09/16 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
和平主题的演讲稿
2014/01/12 职场文书
给交警的表扬信
2014/01/12 职场文书
会议活动邀请函
2014/01/27 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
机关党员公开承诺书
2014/08/30 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
授权委托书
2014/09/17 职场文书
贷款担保书
2015/01/20 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
创业计划书之烤红薯
2019/09/26 职场文书