• Python监听鼠标键盘事件


    # -*- coding: utf-8 -*-
    
    
    
    import pythoncom
    import pyHook
    import win32api
    import win32con
    import time
    import threading
    import random
    
    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 != '' and isinstance(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 in key:
                    win32api.keybd_event(VK_CODE[x], 0, 0, 0)
    
    
    def key_up(key=''):
        if key != '' and isinstance(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 in key:
                    win32api.keybd_event(VK_CODE[x], 0, win32con.KEYEVENTF_KEYUP, 0)
    
    
    def send_click():
        global down_num, up_num
        while (1):
            if down_num != up_num:
                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.38, 0.56))
                key_press('1')
                key_up('1')
                print 'click ok'
    
    
    def onMouse_leftdown(event):
        # 监听鼠标左键按下事件
        global down_num
        down_num += 1
        print "left DOWN DOWN" + str(down_num)
        return True
        # 返回 True 表示响应此事件,False表示拦截
    
    
    def onMouse_leftup(event):
        # 监听鼠标左键弹起事件
        global up_num
        up_num += 1
        print "left UP UP UP" + str(up_num)
        return True
    
    
    def keybord_1(event):
        pass
    
    
    def main():
        hm = pyHook.HookManager()
    
        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()
    # -*- coding: utf-8 -*-
    
    
    
    import pythoncom
    import pyHook
    import win32api
    import win32con
    import time
    import threading
    import random
    
    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 != '' and isinstance(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 in key:
                    win32api.keybd_event(VK_CODE[x], 0, 0, 0)
    
    
    def key_up(key=''):
        if key != '' and isinstance(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 in key:
                    win32api.keybd_event(VK_CODE[x], 0, win32con.KEYEVENTF_KEYUP, 0)
    
    
    def send_click():
        global down_num, up_num
        while (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'
    
    
    def onMouse_rightdown(event):
        # 监听鼠标右键按下事件
        # global down_num
        # down_num += 1
        print "right DOWN DOWN" + str(down_num)
        return True
    
    def onMouse_rightup(event):
        # 监听鼠标左键弹起事件
        # global up_num
        # up_num += 1
        print "left UP UP UP" + str(up_num)
        return True
    
    def onMouse_leftdown(event):
        # 监听鼠标左键按下事件
        global down_num
        down_num += 1
        print "left DOWN DOWN" + str(down_num)
        return True
        # 返回 True 表示响应此事件,False表示拦截
    
    
    def onMouse_leftup(event):
        # 监听鼠标左键弹起事件
        global up_num
        up_num += 1
        print "left UP UP UP" + str(up_num)
        return True
    
    
    
    def main():
        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()

     Java版

    package IV;
    import java.awt.event.InputEvent;
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.util.Random;
    
    public class clicktest {
        private Robot operation;
    
        public static void main(String[] args) {
            clicktest te2 = new clicktest();
    
            te2.ss_mf();
        }
    
        public void ss_mf() {
            for (int i = 1; i <= 100; i++) {
    //            screenMouseMove(1, 1);
                LeftMouseClick();
                System.out.println("移动次数:" + i);
                try {
    //                Thread.sleep(240000L);
                    Thread.sleep(500);
                } catch (Exception localException) {
                }
            }
        }
    
        public void screenMouseMove(int x, int y) {
            try {
                this.operation = new Robot();
            } catch (AWTException e) {
                e.printStackTrace();
            }
    
            this.operation.mouseMove(x, y);
        }
    
        public void LeftMouseClick() {
            try {
                this.operation = new Robot();
            } catch (AWTException e) {
                e.printStackTrace();
            }
            //点击鼠标左键
            this.operation.mousePress(InputEvent.BUTTON1_MASK);
            this.operation.mouseRelease(InputEvent.BUTTON1_MASK);
    
        }
        public void RightMouseClick() {
            try {
                this.operation = new Robot();
            } catch (AWTException e) {
                e.printStackTrace();
            }
            //点击鼠标左键
            this.operation.mousePress(InputEvent.BUTTON3_MASK);
            this.operation.mouseRelease(InputEvent.BUTTON3_MASK);
    
        }
    }
  • 相关阅读:
    题解 POJ1149 Pigs
    题解 【网络流24题】运输问题
    题解 【网络流24题】太空飞行计划
    题解 【网络流24题】方格取数问题
    题解 密码锁
    题解 【重庆八中模拟赛】寻找代表元
    题解 [SHOI2010]最小生成树
    题解 【ZJOI2009】 假期的宿舍
    题解 [ZJOI2008]树的统计Count
    JSP页面中的pageEncoding和contentType两种属性(转)
  • 原文地址:https://www.cnblogs.com/cmm2016/p/6775409.html
Copyright © 2020-2023  润新知