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开发之thread线程基础实例入门
Nov 11 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
numpy自动生成数组详解
Dec 15 Python
python列表list保留顺序去重的实例
Dec 14 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
Python3.5运算符操作实例详解
Apr 25 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
pycharm使用技巧之自动调整代码格式总结
Nov 04 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四舍五入精确小数位及取整
2014/01/14 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
Javascript Math对象
2009/08/13 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
如何利用python生成MD5并去重
2020/12/07 Python
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
聚美优品的广告词
2014/03/14 职场文书
大学生村官考核材料
2014/05/23 职场文书
ktv好的活动方案
2014/08/15 职场文书
2014年林业工作总结
2014/12/05 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
龙门石窟导游词
2015/02/02 职场文书
读书笔记格式
2015/07/02 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
Python实现简单得递归下降Parser
2022/05/02 Python