Python——pyHook監聽鼠標鍵盤事件

pyHook包爲Windows中的全局鼠標和鍵盤事件提供回調。
底層C庫報告的信息包括事件的時間,事件發生的窗口名稱,事件的值,任何鍵盤修飾符等。
而正常工做須要pythoncom等操做系統的API的支持。
  html

先鏈上一篇《pyHook和pythoncom的安裝》

  

而後開始講pyHook的使用。

關於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

相關文章
相關標籤/搜索