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

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

先链上一篇《pyHook和pythoncom的安装》

  

然后开始讲pyHook的使用。

关于pyHook的使用,网上现存的大多教程如下:


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()

结果如下:

1346146-20190305152212554-1079538293.png
  

但是,

其实我们都明白,

一个程序是不可能只有这一段代码的,

这最多只能算是一个线程。

  
那么,我们来把主函数改一下吧:


import _thread

if __name__ == "__main__":
    try:
        _thread.start_new_thread(main, ())
    except:
        print("Error")

    while 1:
        pass

这就变成了线程,输出结果依旧,但似乎卡了许多???而且很明显的是,监控鼠标&键盘事件很容易影响我们系统的正常运行,也就是容易卡顿,甚至会造成输出不全或者是按键失灵等问题。
  
这就不好玩了。
毕竟我也只是想监测鼠标有没有动而已。
所以最简单的办法就是——

把你不需要的功能输出统统删掉,就不卡了。

  

至于这东西有什么用呢~~~

那就厉害咯。

  你可以记录并画出自己的鼠标轨迹;或者是记录一天各按键的次数,并进行排序;当然,如果你比较皮,你还可以锁住别人的鼠标键盘(只需返回值为None);甚至是记录下别人一天在哪些程序花费了多少时间,看什么网页啊,八小时上班七小时水群啊,毕竟你是可以获取当前窗口标题的(WindowName)。
  嘘~~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WoLykos

若对你有所帮助,请鼓励我一下~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值