python监听鼠标_Python监听鼠标键盘事件

该博客介绍了一个Python程序,使用pyHook库监听鼠标的左右键点击和键盘按键事件。程序能够模拟鼠标点击和键盘按键操作,包括左右键的按下和抬起,并提供了按键按下和抬起的打印输出。此外,它还包含了一个模拟连射功能,可以用于自动化某些操作。
摘要由CSDN通过智能技术生成

#-*- coding: utf-8 -*-

importpythoncomimportpyHookimportwin32apiimportwin32conimporttimeimportthreadingimportrandom

VK_CODE={'backspace': 0x08,'tab': 0x09,'clear': 0x0C,'enter': 0x0D,'shift': 0x10,'ctrl': 0x11,'alt': 0x12,'pause': 0x13,'caps_lock': 0x14,'esc': 0x1B,'spacebar': 0x20,'page_up': 0x21,'page_down': 0x22,'end': 0x23,'home': 0x24,'left_arrow': 0x25,'up_arrow': 0x26,'right_arrow': 0x27,'down_arrow': 0x28,'select': 0x29,'print': 0x2A,'execute': 0x2B,'print_screen': 0x2C,'ins': 0x2D,'del': 0x2E,'help': 0x2F,'0': 0x30,'1': 0x31,'2': 0x32,'3': 0x33,'4': 0x34,'5': 0x35,'6': 0x36,'7': 0x37,'8': 0x38,'9': 0x39,'a': 0x41,'b': 0x42,'c': 0x43,'d': 0x44,'e': 0x45,'f': 0x46,'g': 0x47,'h': 0x48,'i': 0x49,'j': 0x4A,'k': 0x4B,'l': 0x4C,'m': 0x4D,'n': 0x4E,'o': 0x4F,'p': 0x50,'q': 0x51,'r': 0x52,'s': 0x53,'t': 0x54,'u': 0x55,'v': 0x56,'w': 0x57,'x': 0x58,'y': 0x59,'z': 0x5A,'numpad_0': 0x60,'numpad_1': 0x61,'numpad_2': 0x62,'numpad_3': 0x63,'numpad_4': 0x64,'numpad_5': 0x65,'numpad_6': 0x66,'numpad_7': 0x67,'numpad_8': 0x68,'numpad_9': 0x69,'multiply_key': 0x6A,'add_key': 0x6B,'separator_key': 0x6C,'subtract_key': 0x6D,'decimal_key': 0x6E,'divide_key': 0x6F,'F1': 0x70,'F2': 0x71,'F3': 0x72,'F4': 0x73,'F5': 0x74,'F6': 0x75,'F7': 0x76,'F8': 0x77,'F9': 0x78,'F10': 0x79,'F11': 0x7A,'F12': 0x7B,'F13': 0x7C,'F14': 0x7D,'F15': 0x7E,'F16': 0x7F,'F17': 0x80,'F18': 0x81,'F19': 0x82,'F20': 0x83,'F21': 0x84,'F22': 0x85,'F23': 0x86,'F24': 0x87,'num_lock': 0x90,'scroll_lock': 0x91,'left_shift': 0xA0,'right_shift': 0xA1,'left_control': 0xA2,'right_control': 0xA3,'left_menu': 0xA4,'right_menu': 0xA5,'browser_back': 0xA6,'browser_forward': 0xA7,'browser_refresh': 0xA8,'browser_stop': 0xA9,'browser_search': 0xAA,'browser_favorites': 0xAB,'browser_start_and_home': 0xAC,'volume_mute': 0xAD,'volume_Down': 0xAE,'volume_up': 0xAF,'next_track': 0xB0,'previous_track': 0xB1,'stop_media': 0xB2,'play/pause_media': 0xB3,'start_mail': 0xB4,'select_media': 0xB5,'start_application_1': 0xB6,'start_application_2': 0xB7,'attn_key': 0xF6,'crsel_key': 0xF7,'exsel_key': 0xF8,'play_key': 0xFA,'zoom_key': 0xFB,'clear_key': 0xFE,'+': 0xBB,',': 0xBC,'-': 0xBD,'.': 0xBE,'/': 0xBF,'`': 0xC0,';': 0xBA,'[': 0xDB,'\\': 0xDC,']': 0xDD,"'": 0xDE,'`': 0xC0}def key_press(key=''):if key != '' andisinstance(key, str):if key.__len__() == 1:

win32api.keybd_event(VK_CODE[key], 0, 0, 0)print 'press key down:%s' %VK_CODE[key]else:for x inkey:

win32api.keybd_event(VK_CODE[x], 0, 0, 0)def key_up(key=''):if key != '' andisinstance(key, str):if key.__len__() == 1:

win32api.keybd_event(VK_CODE[key], 0, win32con.KEYEVENTF_KEYUP, 0)print 'press key up:%s' %VK_CODE[key]else:for x inkey:

win32api.keybd_event(VK_CODE[x], 0, win32con.KEYEVENTF_KEYUP, 0)defsend_click():globaldown_num, up_numwhile (1):if down_num !=up_num:

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)

time.sleep(random.uniform(0.28, 0.32))

win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)

time.sleep(random.uniform(0.18, 0.22))

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)#连射多少秒,大约0.1秒一发子弹

time.sleep(random.uniform(0.38, 0.42))

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#连发之间的停顿时间

time.sleep(random.uniform(0.25, 0.29))

key_press('2')

key_up('2')

time.sleep(random.uniform(0.68, 0.86))

key_press('1')

key_up('1')print 'click ok'

defonMouse_rightdown(event):#监听鼠标右键按下事件

#global down_num

#down_num += 1

print "right DOWN DOWN" +str(down_num)returnTruedefonMouse_rightup(event):#监听鼠标左键弹起事件

#global up_num

#up_num += 1

print "left UP UP UP" +str(up_num)returnTruedefonMouse_leftdown(event):#监听鼠标左键按下事件

globaldown_num

down_num+= 1

print "left DOWN DOWN" +str(down_num)returnTrue#返回 True 表示响应此事件,False表示拦截

defonMouse_leftup(event):#监听鼠标左键弹起事件

globalup_num

up_num+= 1

print "left UP UP UP" +str(up_num)returnTruedefmain():

hm=pyHook.HookManager()

hm.Mouseright=onMouse_rightdown

hm.MouseLeftDown=onMouse_leftdown

hm.MouseLeftUp=onMouse_leftup

hm.HookMouse()#进入循环,如不手动关闭,程序将一直处于监听状态

pythoncom.PumpMessages()if __name__ == "__main__":

down_num=0

up_num=0#新线程执行的代码:

print('thread %s is running...' %threading.current_thread().name)

t= threading.Thread(target=send_click, name='sendThread')

t.start()#t.join()

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来回答您的问题。 pynput是Python的一个第三方库,可以用来控制键盘和鼠标。它提供了两个主要的模块:keyboard和mouse。以下是pynput的详细用法: 1. 安装pynput 在终端输入以下命令即可安装pynput: ``` pip install pynput ``` 2. 控制键盘 使用pynput控制键盘需要导入keyboard模块,然后创建一个Listener对象并定义回调函数来监听键盘事件。以下是一个示例代码: ```python from pynput import keyboard def on_press(key): try: print('Key {} pressed.'.format(key.char)) except AttributeError: print('Special key {} pressed.'.format(key)) def on_release(key): print('Key {} released.'.format(key)) with keyboard.Listener(on_press=on_press, on_release=on_release) as listener: listener.join() ``` 这个代码可以监听键盘按下和松开的事件,并打印出对应的键位信息。 3. 控制鼠标 使用pynput控制鼠标需要导入mouse模块,然后创建一个Controller对象来模拟鼠标操作。以下是一个示例代码: ```python from pynput.mouse import Button, Controller mouse = Controller() # 鼠标移动到(x, y)位置 mouse.position = (100, 200) # 鼠标左键单击 mouse.click(Button.left, 1) # 鼠标右键单击 mouse.click(Button.right, 1) # 鼠标滚轮向上滚动10个单位 mouse.scroll(0, 10) ``` 这个代码可以模拟鼠标移动、左键单击、右键单击和滚轮滚动操作。 以上就是pynput的详细用法,希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值