此項功能的實現主要是使用了多線程、鍵盤/鼠標事件監聽,最后通過NLTK語言的處理,從而反向推出電腦的操作記錄等信息。業務邏輯並不復雜,我們一起來看看吧!

安裝相關的第三方庫,一是關於監聽的處理、二是關於日志的記錄模塊、三是關於簡單的線程處理模塊。
1、安裝pynput庫監控鍵盤、鼠標事件

2、安裝日志處理

將相關的模塊導入到代碼塊中。
# 鼠標鍵盤監控
from pynput import keyboard, mouse
# 日志處理
from loguru import logger
# 多線程處理
from threading import Thread
將目標日志記錄文件加入到logger代碼處理器中。
logger.add('lister.log')
編寫鼠標被按下時的處理函數。
def on_keyboard_press(key):
'''
按鍵時記錄所按下的鍵
:param key:
:return:
'''
logger.debug(f'{key} :被按下了')
編寫鼠標抬起時的處理函數。
def on_keyboard_release(key):
'''
釋放按鍵處理函數
:param key:
:return:
'''
if key == keyboard.Key.esc:
return False
編寫鼠標單擊、右擊以及滑輪的處理函數。
def on_mouse_click(x, y, click, pressed):
if click == mouse.Button.left:
logger.debug('鼠標左鍵按下了')
elif click == mouse.Button.right:
logger.debug('鼠標右鍵按下了')
return False
else:
logger.debug('中間滾輪按下了')
將鍵盤相關的處理函數加入到鍵盤事件的監聽中。
def func_keyboard():
'''
鍵盤的按下/釋放的監聽
:return:
'''
with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
keyboard_listener.join()
將鼠標相關的處理函數加入到鼠標事件的監聽中。
def func_mouse_click():
'''
監聽鼠標
:return:
'''
with mouse.Listener(on_click=on_mouse_click) as mouse_listener:
mouse_listener.join()
在main()的處理函數中將鼠標監聽、鍵盤監聽分別作為兩個線程啟動。
if __name__ == '__main__':
'''
執行線程
'''
# 定義鍵盤監聽線程
thread_keyboard = Thread(target=func_keyboard)
# 定義鼠標監聽線程
thread_mouse = Thread(target=func_mouse_click)
# 分別啟動線程
thread_keyboard.start()
thread_mouse.start()
最后可以得到一份鍵盤、鼠標歷史執行狀態記錄的日志文件,通過NLTK語言的處理從而逆向推出電腦的操作內容,這一部分就不演示了。

【往期精彩】
● 如果你是一名java程序員,面對已經寫好的python腳本該如何調用,其實很簡單!
● 如何使用PyQt5一步步實現用戶登錄GUI界面、登錄后跳轉?
● 辦公自動化:幾行代碼將PDF文檔轉換為WORD文檔(代碼實戰)!
● 辦公自動化:輕松提取PDF頁面數據,並生成Excel文件(代碼實戰)!
● sched 模塊中巨好用的輕量級定時任務神器scheduler!
● 不用再使用命令行打包成exe,有人寫出了UI應用,可視化UI界面對python程序進行打包的方法!
● 發現一個秘密:既python3.6之后字典竟然變成了有序集合,我再次驗證了一下!
● 這么多的內置函數能記住嗎?對python的68個內置函數分類總結!
● 必須要會的文件操作對象File,python文件讀寫操作利器!
● 你不知道的CS模式的進程管理工具,狀態監測、項目啟停一目了然!
● 如何將一個python應用以docker鏡像的方式來運行?
● python-celery專注於實現分布式異步任務處理、任務調度的插件!
● python遠程服務操作工具:fabric,遠程命令、本地命令、服務器操作利器!
● python超贊插件you-get,執行一行命令即可下載、命令行下載工具推薦!
