zoukankan      html  css  js  c++  java
  • 用PYTHON监听鼠标和键盘事件(转)

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

    关于PyHook的使用,在它的官方主页上就有一个简单的教程,大体上来说,可以这样使用:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    # -*- coding: utf-8 -*-
    #
    # by oldj
    #
     
    import pythoncom
    import 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 以便将事件传给其它处理程序
        # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截
        # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了
        return True
     
    def onKeyboardEvent(event):
        # 监听键盘事件
        print "MessageName:", event.MessageName
        print "Message:", event.Message
        print "Time:", event.Time
        print "Window:", event.Window
        print "WindowName:", event.WindowName
        print "Ascii:", event.Ascii, chr(event.Ascii)
        print "Key:", event.Key
        print "KeyID:", event.KeyID
        print "ScanCode:", event.ScanCode
        print "Extended:", event.Extended
        print "Injected:", event.Injected
        print "Alt", event.Alt
        print "Transition", event.Transition
        print "---"
     
        # 同鼠标事件监听函数的返回值
        return True
     
    def main():
        # 创建一个“钩子”管理对象
        hm = pyHook.HookManager()
     
        # 监听所有键盘事件
        hm.KeyDown = onKeyboardEvent
        # 设置键盘“钩子”
        hm.HookKeyboard()
     
        # 监听所有鼠标事件
        hm.MouseAll = onMouseEvent
        # 设置鼠标“钩子”
        hm.HookMouse()
     
        # 进入循环,如不手动关闭,程序将一直处于监听状态
        pythoncom.PumpMessages()
     
    if __name__ == "__main__":
        main()

    运行上面的脚本,试试看移动一下鼠标,或者按一下键盘(比如开一个记事本程序,随便写点东西),看看这个脚本输出了什么。你会发现,你的鼠标、键盘的每一个动作都被它捕捉到并打印出来了。

    另外,需要注意上面两个监听函数的返回值。这两个函数可以没有返回值(实际上返回的是 None),如果有返回值的话,如果返回值为 True,则这个脚本在捕捉、处理对应的事件后会把事件继续传递下去,如果返回值为 False,则事件将会被阻塞在这儿,具体来说,就是你的鼠标或键盘将不再有响应。

    有了 PyHook,我们可以做很多有趣的事情:比如记录一下自己一天鼠标的轨迹,再结合别的程序画一张图出来;或者记录一下你每天的按键记录,看看键盘上哪些键你按得最多;如果你很坏,还可以把它悄悄地装在别人的电脑中,看一看那个人一天都做了些什么;当然,由于 PyHook 还可以取得当前窗口的标题(WindowName),你还可以记录下来一天之中你在各个程序上花费了多少时间,看看自己有多少时间在看网页、多少时间在聊天、多少时间在真正地工作,呵呵。

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/chateldon/p/3317365.html
Copyright © 2011-2022 走看看