Hướng dẫn keyboard hook example python - ví dụ về móc bàn phím python

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

# Env: Windows 10, Python 3.8.3
Nhập khẩu sys
Nhập khẩuWin32API, Win32Con win32api, win32con
fromctypesimport* ctypes import *
FromCtypes.WIntyPesImportDword, Hhook, Hinstance, MSG, WPARAM, LPARAM ctypes.wintypes import DWORD, HHOOK, HINSTANCE, MSG, WPARAM, LPARAM
user32=windll.user32 = windll.user32
kernel32=windll.kernel32 = windll.kernel32
classkbdllhookstruct (cấu trúc): KBDLLHOOKSTRUCT(Structure):
_fields_ = [ = [
('vkcode', dword),'vkCode', DWORD),
('Scancode', Dword),'scanCode', DWORD),
('cờ', dword),'flags', DWORD),
('Thời gian', DWORD),'time', DWORD),
('dwextrainfo', dword)]'dwExtraInfo', DWORD)]
defuninstallhookproc (Hooked): uninstallHookProc(hooked):
ifhookedisnone: hooked is None:
return
User32.unhookWindowShoookex (Hooked).UnhookWindowsHookEx(hooked)
hooked=None = None
DEFHOOKPROC (NCODE, WPARAM, LPARAM): hookProc(nCode, wParam, lParam):
Ifncode nCode < 0:
returnuser32.callnexthoookex (hooked, ncode, wparam, lparam) user32.CallNextHookEx(hooked, nCode, wParam, lParam)
khác::
# Lwin + shift + key_s 막기
# Cửa sổ Khóa: 390842024027
# SHIF trái: 180388626592
# S: 133143986259
# THOÁT
# Keydown
# nếu wparam == 256:
# KEYUP
# nếu wparam == 257:
ifwparam == 256orwparam == 257: wParam == 256 or wParam == 257:
if4294967323 == lparam.contents.value: 4294967323 == lParam.contents.value:
in ("ESC nhấn, gọi Hook Gỡ cài đặt ()")("ESC pressed, call Hook uninstall()")
Uninstallhookproc (Hooked)(hooked)
sys.exit (-1).exit(-1)
ELIF180388626592 == LPARAM.Contents.value: 180388626592 == lParam.contents.value:
# Chiến thắng trái
key1=win32api.GetAsyncKeyState(win32con.VK_LWIN)&0x8000 = win32api.GetAsyncKeyState(win32con.VK_LWIN)&0x8000
# Key_s
key2=win32api.GetAsyncKeyState(0x53)&0x8000 = win32api.GetAsyncKeyState(0x53)&0x8000
ifkey1andkey2: key1 and key2:
in ('tất cả được nhấn') ('all pressed')
# 키 이벤트 흘려 보내기
return1 1
ELIF390842024027 == LPARAM.Contents.value: 390842024027 == lParam.contents.value:
In ("WindowKey") ("WindowKey")
# SỰ THAY ĐỔI
key1=win32api.GetAsyncKeyState(win32con.VK_SHIFT)&0x8000 = win32api.GetAsyncKeyState(win32con.VK_SHIFT)&0x8000
# Key_s
key2=win32api.GetAsyncKeyState(0x53)&0x8000 = win32api.GetAsyncKeyState(0x53)&0x8000
ifkey1andkey2: key1 and key2:
in ('tất cả được nhấn') ('all pressed')
# 키 이벤트 흘려 보내기
return1 1
ELIF390842024027 == LPARAM.Contents.value: 133143986259 == lParam.contents.value:
In ("WindowKey") ("Key_S")
# SỰ THAY ĐỔI
key1=win32api.GetAsyncKeyState(win32con.VK_SHIFT)&0x8000 = win32api.GetAsyncKeyState(win32con.VK_SHIFT)&0x8000
# Chiến thắng trái
key2=win32api.GetAsyncKeyState(win32con.VK_LWIN)&0x8000 = win32api.GetAsyncKeyState(win32con.VK_LWIN)&0x8000
ifkey1andkey2: key1 and key2:
in ('tất cả được nhấn') ('all pressed')
# 키 이벤트 흘려 보내기
return1 1
returnuser32.callnexthoookex (hooked, ncode, wparam, lparam) user32.CallNextHookEx(hooked, nCode, wParam, lParam)
khác: installHookProc(hooked, pointer):
# Lwin + shift + key_s 막기 = user32.SetWindowsHookExA(
13, ,
# Cửa sổ Khóa: 390842024027,
# SHIF trái: 180388626592,
0
# S: 133143986259
# THOÁT ('hooked:', hooked)
# Keydown not hooked:
# nếu wparam == 256: False
# KEYUP True
# nếu wparam == 257: = CFUNCTYPE(c_int, c_int, c_int, POINTER(c_void_p))
ifwparam == 256orwparam == 257: = HOOKPROTYPE(hookProc)
hooked=None = None
if4294967323 == lparam.contents.value: installHookProc(hooked, pointer):
in ("ESC nhấn, gọi Hook Gỡ cài đặt ()")("Hook installed")
Uninstallhookproc (Hooked):
sys.exit (-1) = MSG()
ELIF180388626592 == LPARAM.Contents.value:.GetMessageA(byref(msg), 0, 0, 0)
# Chiến thắng trái KeyboardInterrupt as kerror:
Uninstallhookproc (Hooked)(hooked)
sys.exit (-1)("Hook uninstall...")
khác::
# Lwin + shift + key_s 막기("Hook installed error")