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