程序如下:

# -*- 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的库监听鼠标程序测试,有程序,有现象的更多相关文章

  1. 用Python监听鼠标和键盘事件

    PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所 ...

  2. Python——pyHook监听鼠标键盘事件

    pyHook包为Windows中的全局鼠标和键盘事件提供回调. 底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等. 而正常工作需要pythoncom等操作系统的API的 ...

  3. 二、python小功能记录——监听鼠标事件

    1.原文链接 #-*- coding:utf-8 -*- from pynput.mouse import Button, Controller ## ======================== ...

  4. 50-用Python监听鼠标和键盘事件

    转自:https://www.cnblogs.com/qiernonstop/p/3654021.html 用Python监听鼠标和键盘事件 PyHook是一个基于Python的“钩子”库,主要用于监 ...

  5. 使用pynput同时监听鼠标和键盘

    pynput概述 pynput是一个基于python的,能够监听和控制鼠标和键盘的第三方库. pynput主要包括两个类,pynput.mouse和pynput.keyboard,顾名思义,前者可以用 ...

  6. java 事件监听 - 鼠标

    java 事件监听 - 鼠标 //事件监听 //鼠标事件监听 //鼠标事件监听有两个实现接口 //1.MouseListener 普通的鼠标操作 //2.MouseMotionListener 鼠标的 ...

  7. 关于如何用Jquery监听鼠标滚轮改变横向滚动条

    $(function(){ if ((navigator.userAgent.indexOf('MSIE') >= 0)){/*判断是否是IE浏览器*/ var scroll_width = 1 ...

  8. js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写

    js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...

  9. Vue 监听鼠标左键 鼠标右键以及鼠标中键修饰符click.left&contextmenu&click.middle

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. wscript shell

    http://blog.csdn.net/songques/article/details/8309569 http://baike.baidu.com/link?url=_P6z73_Ih9R79T ...

  2. Android Support 包里到底有什么

    大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 随着 ...

  3. Chrome不能在网易网盘中上传文件的解决办法

    Chrome不能在网易网盘中上传文件的解决办法1. 安装 Adobe Flash Player PPAPI,设置flash插件 chrome://settings/content/flash,许可[* ...

  4. 多类别分类问题由 confusion matrix 到分类准确率(accuracy)的计算

    conf_mat = confusionmat(y_true, y_pred); % 首先根据数据集上的真实 label 值,和训练算法给出的预测 label 值, % 计算 confusion ma ...

  5. qtcreator配置

    如果是做嵌入式开发,那么宿主机使用的交叉编译的QT版本是必须和目标板上使用的qt版本一致的. 而且在路径上,如果qt使用的库如果不是放在目标板默认的连接库路径的话, 那么目标板qt程序就会到配置编译Q ...

  6. CISP/CISA 每日一题 九(2017-11-30 09:25)

    电子银行风险管理责任: 1.风险管理是董事会和高级管理层的责任 2.实施技术是信息技术高级管理层的责任 3.测量和监控风险是经营管理层的责任     管理层在实施一个新的电子银行应用程序之前要 ___ ...

  7. 【Codeforces Round #452 (Div. 2) C】 Dividing the numbers

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] n为偶数. l = 1, r = n (l,r)放在一组 l++,r-- 新的l,r放在另外一组 直到l+1==r 这个时候,判断两 ...

  8. bitmap-setBounds方法参数研究

    对于如下的代码,一直有点不明白它具体每一步操作的影响.今天就稍微研究下.代码如下 xml代码 <RelativeLayout xmlns:android="http://schemas ...

  9. hashlib —— Python 的 md5 和 sha1 加密

    python的md5和sha1加密 0. md5 与 sha1 MD5 的全称是 Message-Digest Algorithm 5(信息-摘要算法).128 位长度.目前 MD5 是一种不可逆算法 ...

  10. JS防止全局变量污染解决方案

    1.目前出现的问题: a.随意使用全局变量,会存在冲突的风险和难以解决的问题. b.现有JS代码共享流程中的状态,参数,都是通过按钮传递,非常别扭,不易于管理. c.通过完成后的代码很难知晓业务流程, ...