python监听键盘输入,python监听鼠标键盘事件

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: