用python的库监听鼠标程序测试,有程序,有现象
程序如下:
# -*- 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()
//////////////////////////////////////////////////////////////
移动鼠标时如下图:

点击鼠标左键时见下图:

点击鼠标右键时见下图:

滚动鼠标轮时见下图:

/////////////////////////////////////////////////////
附赠一个更加有趣的小例子
# -*- coding: utf-8 -*-
"""
Created on Sun Jul 23 19:36:50 2017
@author: Administrator
"""
import pythoncom, pyHook
import win32gui,win32api
import win32con
import pymouse
import time
import sys
from lianbiao1 import SingleLinkedList
from lianbiao1 import Node
m=pymouse.PyMouse() #这句话的作用是用来产生鼠标事件的
K_press = False #这是程序的软开关,用于编程开始和结束,按下F2变True,按下F4变False
def OnKeyboardEvent(event):
global K_press #在函数里面使用全局变量的时候要加上global关键字
win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0) #释放shift ,因为当你进入到#时,就少释放了一次shif
#所以,进来之后先释放一次shif.
#监听到任何按键,这里是转换输入法,我们是 '#' 或 '空格' 或 '回车' 或 '鼠标点击' 去转换.
#编写开始编程按键处理
if str(event.Key)=='F2': #按下F2
K_press=True
if str(event.Key)=='F4': #按下F4
K_press=False
if str(event.Key)=='F7': #按下F7后终止
win32api.PostQuitMessage()
sys.exit(0)
if str(event.Key)=='3'and K_press==True: #按下F2,即处于编程开始阶段
#先进行中英文切换
win32api.keybd_event(16,0,0,0) #shift键位码是16
win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0)
#键入#
win32api.keybd_event(16,0,0,0) #shift键位码是16
time.sleep(0.3)
#win32api.keybd_event(99,0,0,0) #3键位码是99
#win32api.keybd_event(99,0,win32con.KEYEVENTF_KEYUP,0) #释放按键3
#win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0) #释放shift
#删除3
#win32api.keybd_event(8,0,0,0) #删除键位码是8
#win32api.keybd_event(8,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
#切换中英文
#win32api.keybd_event(16,0,0,0) #shift键位码是16
#win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
#m.click(300,300,2,1)
#time.sleep(1)
# win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0) #释放按键shift
#m.click(400,400)
# if str(event.Key)=='Space'and K_press==True: #按下空格,并且处于编程开始阶段
#先进行中英文切换
# win32api.keybd_event(16,0,0,0) #shift键位码是16
# win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0)
#会有空格补位??
# if str(event.Key)=='Return'and K_press==True: #按下回车,并且处于编程开始阶段
#先进行中英文切换
# win32api.keybd_event(16,0,0,0) #shift键位码是16
# win32api.keybd_event(16,0,win32con.KEYEVENTF_KEYUP,0)
#会有空格补位??
return True
def onMouseEvent(event): #鼠标的事件
if str(event.Message)=='513' and K_press==True: #按下F2,即处于编程开始阶段 如果检测到点击了鼠标的左键
m.click(500, 300, 2) #点击鼠标右键
m.move(200,200) #把鼠标移动到200,200的位置
return True
if __name__ == "__main__": #相当于主函数
#创建hook句柄
hm = pyHook.HookManager() #创建一个钩子管理对象
#监控键盘
hm.KeyDown = OnKeyboardEvent #至于如何循环检测,那就不太清楚了,或许是库. #就好像设置了中断一样.
hm.HookKeyboard() #键盘钩子
#监控鼠标
hm.MouseAll = onMouseEvent #鼠标事件
hm.HookMouse() #鼠标钩子
pythoncom.PumpMessages()
用python的库监听鼠标程序测试,有程序,有现象的更多相关文章
- 用Python监听鼠标和键盘事件
PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所 ...
- Python——pyHook监听鼠标键盘事件
pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...
- 二、python小功能记录——监听鼠标事件
1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...
- 50-用Python监听鼠标和键盘事件
转自:https://www.cnblogs.com/qiernonstop/p/3654021.html 用Python监听鼠标和键盘事件 PyHook是一个基于Python的“钩子”库,主要用于监 ...
- 使用pynput同时监听鼠标和键盘
pynput概述 pynput是一个基于python的,能够监听和控制鼠标和键盘的第三方库. pynput主要包括两个类,pynput.mouse和pynput.keyboard,顾名思义,前者可以用 ...
- java 事件监听 - 鼠标
java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...
- 关于如何用Jquery监听鼠标滚轮改变横向滚动条
$(function(){ if ((navigator.userAgent.indexOf('MSIE') >= 0)){/*判断是否是IE浏览器*/ var scroll_width = 1 ...
- js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写
js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...
- Vue 监听鼠标左键 鼠标右键以及鼠标中键修饰符click.left&contextmenu&click.middle
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 负载均衡之lvs
集群(cluster):将一组计算机软/硬件连接起来,高度紧密的协作完成计算工作,其中的单个计算机通常称为节点.负载均衡集群(Load Balancing):通过负载均衡器,将负载尽可能平均分摊处理. ...
- Input/output subsystem having an integrated advanced programmable interrupt controller for use in a personal computer
A computer system is described having one or more host processors, a host chipset and an input/outpu ...
- HDU 2563 统计问题 (递推)
A - 统计问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- 跟着辛星用PHP的反射机制来实现插件
我的博文的前一篇解说了PHP的反射机制是怎么回事,假设读者还不清楚反射机制,能够搜索下或者看我的博文,都是不错的选择.我们開始解说一下怎么用PHP来实现插件机制.所谓插件机制.就是我们定义一个接口.即 ...
- Appium IOS 自己主动化測试初探
手机平台的自己主动化測试工具非常多,之前研究过了安卓和苹果的原生自己主动化測试框架.经一些同事介绍,貌似Appium是个不错的工具. 想记录一下研究的结果,也算是篇干货的文章 在网上也看了一些视频.个 ...
- ip地址个数的计算
一个IP地址,却关联太多的知识 二进制与 8 比特 电脑中显示出来的数字是 10 进制的,键盘的每一个键都由一个 8 位的二进制编码,所以 1 字节等于 8 比特.对数字而言,1 的二进制是 0000 ...
- transfer learning(matlab 实现)
一句话总结 transfer learning 的核心即是对一个已训练模型微调,使其适应新的应用,如下图示: 为 matlab 接口所训练完成的经典深度神经网络下载地址:Index of /matco ...
- IIS6下AD域设置
简介:IIS6下AD域设置 IIS6下AD域设置 http://files.cnblogs.com/files/KingUp/AD%E5%9F%9F%E8%AE%BE%E7%BD%AE.rar
- 字符设备驱动-----Linux中断处理体系结构
一.中断处理体系结构的初始化 Linux内核将所有的中断统一编号,使用一个irq_desc结构数组来描述这些中断;每个数组项对应一个中断,也可能是一组中断,它们共用相同的中断号,里面记录了中断的名称. ...
- echarts如何设置背景图的颜色
公司的业务涉及到统计图的有很多,最近一直echarts里面踩各种坑,感觉应该建立一个echarts专题才对,前端的东西博大精深,无论在哪一个知识点,只要细细深究,都是别有一方天地在等待,随着需求的不同 ...