python监听键盘输入,python监听鼠标键盘事件
获得python键盘监控的方法如下:1 .使用“pip install pypiwin32”命令安装pypi Win322.使用win32con的WH _键盘_LL属性设置监控系统的键盘事件。
我们可以使用windows提供的api函数来监控系统键盘事件和鼠标事件,主要使用SetWindowsHookEx函数,该函数允许调用者传入一个钩子函数,也称为回调函数。当指定的事件发生时,您
传入功能将被触发。有些事件是流程级的,有些是系统级的。这里,我们使用WH _键盘_LL来监视系统键盘事件,使用WH _鼠标_LL来监视鼠标事件。注意,它不是WH_KEYBOARD,也不可能通过使用WH_KEYBOARD来监控外部。
这一点可以在windows官方文档中看到。要用WH_KEYBOARD来监控系统键盘,必须写dll来实现。
因为win32con中已经使用了一些宏定义,所以需要安装pypiwin32。当然,如果你把这些宏定义写在自己的文件里,就不需要安装pypiwin32了。
输入:pip install pypiwin32安装pypiwin32。
#编码=utf-8
fromctypesimport*
fromctypesimportwintypes
importwin32con
SetWindowsHookEx=windll . user 32 . SetWindowsHookEx a
unhook windowshookex=windll . user 32 . unhook windowshookex
CallNextHookEx=windll . user 32 . CallNextHookEx
GetMessage=windll . user 32 . GetMessage a
GetModuleHandle=windll . kernel 32 . getmodulehandlew
#保存键盘钩子函数句柄
keyboard _ hd=无
#保存鼠标钩子函数句柄
mouse _ hd=无
classKBDLLHOOKSTRUCT(结构):
_fields_=[
( vkCode ,c_int),
( scanCode ,c_int),
( flags ,c_int),
( time ,c_int),
( dwExtraInfo ,c_uint),
(,c_void_p)
]
classPOINT(结构):
_fields_=[
( x ,c_long),
( y ,c_long)
]
classMSLLHOOKSTRUCT(结构):
_fields_=[
( pt ,点),
( hwnd ,c_int),
( wHitTestCode ,c_uint),
铌
sp;('dwExtraInfo',c_uint),
]
defwait_for_msg():
msg=wintypes.MSG()
GetMessage(msg,0,0,0)
defkeyboard_pro(nCode,wParam,lParam):
"""
函数功能:键盘钩子函数,当有按键按下时此函数被回调
"""
ifnCode==win32con.HC_ACTION:
KBDLLHOOKSTRUCT_p=POINTER(KBDLLHOOKSTRUCT)
param=cast(lParam,KBDLLHOOKSTRUCT_p)
print(param.contents.vkCode)
returnCallNextHookEx(keyboard_hd,nCode,wParam,lParam)
defstart_keyboard_hook():
"""
函数功能:启动键盘监听
"""
HOOKPROTYPE=CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))
pointer=HOOKPROTYPE(keyboard_pro)
keyboard_hd=SetWindowsHookEx(
win32con.WH_KEYBOARD_LL,
pointer,
GetModuleHandle(None),
0)
wait_for_msg()
defstop_keyboard_hook():
"""
函数功能:停止键盘监听
"""
UnhookWindowsHookEx(keyboard_hd)
defmouse_pro(nCode,wParam,lParam):
"""
函数功能:鼠标钩子函数,当有鼠标事件,此函数被回调
"""
ifnCode==win32con.HC_ACTION:
MSLLHOOKSTRUCT_p=POINTER(MSLLHOOKSTRUCT)
param=cast(lParam,MSLLHOOKSTRUCT_p)
#鼠标左键点击
ifwParam==win32con.WM_LBUTTONDOWN:
print("左键点击,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))
elifwParam==win32con.WM_LBUTTONUP:
print("左键抬起,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))
elifwParam==win32con.WM_MOUSEMOVE:
print("鼠标移动,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))
elifwParam==win32con.WM_RBUTTONDOWN:
print("右键点击,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))
elifwParam==win32con.WM_RBUTTONUP:
print("右键抬起,坐标:x:%d,y:%d"%(param.contents.pt.x,param.contents.pt.y))
returnCallNextHookEx(mouse_hd,nCode,wParam,lParam)
defstart_mouse_hook():
"""
函数功能:启动鼠标监听
"""
HOOKPROTYPE=CFUNCTYPE(c_int,c_int,c_int,POINTER(c_void_p))
pointer=HOOKPROTYPE(mouse_pro)
mouse_hd=SetWindowsHookEx(
win32con.WH_MOUSE_LL,
pointer,
GetModuleHandle(None),
0)
wait_for_msg()
defstop_mouse_hook():
"""
函数功能:停止鼠标监听
"""
UnhookWindowsHookEx(mouse_hd)打开一个txt文件,在里面输入文字,
importHookApiif__name__=='__main__':HookApi.start_keyboard_hook()
推荐课程:聚类算法深度解析(黑马程序员)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。