pyHook包为Windows中的全局鼠标和键盘事件提供回调。
底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等。
而正常工做须要pythoncom等操做系统的API的支持。
html
关于pyHook的使用,网上现存的大多教程以下:python
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()
结果以下:函数
那么,咱们来把主函数改一下吧:操作系统
import _thread if __name__ == "__main__": try: _thread.start_new_thread(main, ()) except: print("Error") while 1: pass
这就变成了线程,输出结果依旧,但彷佛卡了许多???并且很明显的是,监控鼠标&键盘事件很容易影响咱们系统的正常运行,也就是容易卡顿,甚至会形成输出不全或者是按键失灵等问题。
这就很差玩了。
毕竟我也只是想监测鼠标有没有动而已。
因此最简单的办法就是——线程
你能够记录并画出本身的鼠标轨迹;或者是记录一天各按键的次数,并进行排序;固然,若是你比较皮,你还能够锁住别人的鼠标键盘(只需返回值为None);甚至是记录下别人一天在哪些程序花费了多少时间,看什么网页啊,八小时上班七小时水群啊,毕竟你是能够获取当前窗口标题的(WindowName)。
嘘~~~code