Python监听鼠标和键盘

来源:互联网 发布:js windows.onload 编辑:程序博客网 时间:2024/05/18 20:33
# -*- coding: utf-8 -*-import pythoncomimport pyHookimport win32apiimport win32conimport timeimport threadingimport randomVK_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 Truedef keybord_1(event):    passdef 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 pythoncomimport pyHookimport win32apiimport win32conimport timeimport threadingimport randomVK_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 Truedef onMouse_rightup(event):    # 监听鼠标左键弹起事件    # global up_num    # up_num += 1    print "left UP UP UP" + str(up_num)    return Truedef 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 Truedef 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);    }}



原创粉丝点击