您的位置:首页 > 编程语言 > Python开发

Python监听鼠标和键盘

2017-10-30 10:39 435 查看
# -*- 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);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python Java