Posted in Python onMarch 14, 2020
Python2.7: 使用Pyhook模块监听鼠标键盘事件-获取坐标。因该模块对Python3 有兼容性问题,故采用python2.7解释器。
原程序可监听所有事件,现注释掉部分功能,只输出鼠标左键触发的坐标,用于获取坐标,方便自动化取点。
# -*- coding: utf-8 -*- # # import pythoncom import pyHook def onMouseEvent(event): # 监听鼠标事件 # print ("MessageName:", event.MessageName) # print ("Message:", event.Message) # print ("Time:", event.Time) # print ("Window:", event.Window) # print ("WindowName:", event.WindowName) # print ("Position:", event.Position) # print ("Wheel:", event.Wheel) # print ("Injected:", event.Injected) # print ("---") if event.MessageName == 'mouse left down': print 'mouse left down' print ("Position:", event.Position) # 返回 True 以便将事件传给其它处理程序 # 注意,这儿如果返回 False ,则鼠标事件将被全部拦截 # 也就是说你的鼠标看起来会僵在那儿,似乎失去响应了 return True def onKeyboardEvent(event): # 监听键盘事件 # print ("MessageName:", event.MessageName) # print ("Message:", event.Message) # print ("Time:", event.Time) # print ("Window:", event.Window) # print ("WindowName:", event.WindowName) # print ("Ascii:", event.Ascii, chr(event.Ascii)) # print ("Key:", event.Key) # print ("KeyID:", event.KeyID) # print ("ScanCode:", event.ScanCode) # print ("Extended:", event.Extended) # print ("Injected:", event.Injected) # print ("Alt", event.Alt) # print ("Transition", event.Transition) # print ("---") # 同鼠标事件监听函数的返回值 return True def main(): # 创建一个“钩子”管理对象 hm = pyHook.HookManager() # 监听所有键盘事件 #hm.KeyDown = onKeyboardEvent # 设置键盘“钩子” #hm.HookKeyboard() # 监听所有鼠标事件 hm.MouseAll = onMouseEvent # 设置鼠标“钩子” hm.HookMouse() # 进入循环,如不手动关闭,程序将一直处于监听状态 pythoncom.PumpMessages() if __name__ == "__main__": main()
补充知识:python 工具mouse_find 鼠标定位
我就废话不多说了,还是直接看代码吧!
import os,time import pyautogui as pag try: while True: print ("Press Ctrl-C to end") x,y = pag.position() #返回鼠标的坐标 posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4) print (posStr)#打印坐标 time.sleep(0.2) os.system('cls')#清楚屏幕 except KeyboardInterrupt: print( 'end....')
以上这篇Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
- Author -
Damon_1992声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@