天天看點

Python 鍵盤滑鼠監聽

異想天開的想記錄一下自己每天的鍵盤鍵位走向,于是就在網上搜尋了一下相關的實作,然後就發現了一個第三方的庫pyHook.封裝的很好,我們隻需要傻瓜式的調用裡面的API就可以了。

下面是我在使用pyHook 的過程中遇到的問題和經驗總結。

作業系統: windows7 64位旗艦版

Python版本: 2.7.11

第三方庫:

IDE: PyCharm 2016.2 pro

PyHook是一個基于Python的“鈎子”庫,主要用于監聽目前電腦上滑鼠和鍵盤的事件。這個庫依賴于另一個Python庫PyWin32,如同名字所顯示的,PyWin32隻能運作在Windows平台,是以PyHook也隻能運作在Windows平台。

pyHook裡面最重要的大緻有三個API比較常用。如下:

HookManager()

建立一個“鈎子”管家,便于接下的全局設定

HookManager.onMouseEvent + HookManager.HookMouse()

監聽滑鼠事件,并且設定滑鼠鈎子。這兩個應該作為原子操作同時出現。

HookManager.onKeyboardEvent + HookManager.HookKeyboard()

監聽鍵盤事件,并且設定鍵盤鈎子,同樣這兩個應該同時出現。

下面是我自己寫的一個測試代碼,具體内容如下:

global result 的設定,這樣就可以記錄下來之前的result來保證之前的資料不被覆寫!

Python 鍵盤滑鼠監聽

這是實時的檢測結果,是我在程式中添加<code>設定result為全局的,避免檔案被覆寫</code>

時所截獲的資料流。

在上面的代碼中,注釋已經做的很詳細了。但還是有一些奇怪的現象要講一講:

main函數:這裡單獨定義了一個main函數,然後讓主函數來進行調用。也許,你會認為這不是多此一舉嗎?然而,事實是隻有這樣才能讓代碼順利執行下去。真的是有悖常理。

使用了全局變量result: 這裡就是為了防止在向檔案中寫入資料的時候覆寫之前的檔案資訊 。

在判斷鍵盤按下Q鍵的時候,停止鍵盤事件的記錄。如果想徹底的停止程式的監聽的話,需要調用win32api.PostQuitMessage().

有了這些基礎性的知識之後,就可以大膽的思考做一些有意思的東西了。除了記錄自己在電腦上的行為,還可以将這些資料整合起來,利用資料挖掘的相關的技術,做更加高深的處理。

或者,你想偷偷的知道别人在電腦上的操作行為,這些都可以很愉快的實作。

而且通過發郵件的形式或者連結遠端伺服器的方式同樣可以遠端的進行更Hack的操作。

這裡隻是抛磚引玉,有興趣的不妨在下面留言哦。