windows下python模拟鼠标点击和键盘输示例

需要先装pywin32,windows下调用winapi的接口

代码如下:

## _*_ coding:utf-8 _*___author__ = ‘shanl’

import win32apiimport win32conimport win32guifrom ctypes import *import time

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, ‘pide_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}

class point(structure): _fields_ = [(“x”, c_ulong),(“y”, c_ulong)]

def get_mouse_point(): po = point() windll.user32.getcursorpos(byref(po)) return int(po.x), int(po.y)

def mouse_click(x=none,y=none): if not x is none and not y is none: mouse_move(x,y) time.sleep(0.05) win32api.mouse_event(win32con.mouseeventf_leftdown, 0, 0, 0, 0)

def mouse_dclick(x=none,y=none): if not x is none and not y is none: mouse_move(x,y) time.sleep(0.05) win32api.mouse_event(win32con.mouseeventf_leftdown, 0, 0, 0, 0) win32api.mouse_event(win32con.mouseeventf_leftdown, 0, 0, 0, 0)

def mouse_move(x,y): windll.user32.setcursorpos(x, y)

def key_input(str=”): for c in str: win32api.keybd_event(vk_code[c],0,0,0) win32api.keybd_event(vk_code[c],0,win32con.keyeventf_keyup,0) time.sleep(0.01)

def t0(): pass

def t2(): mouse_click(800,200) for c in ‘hello’: win32api.keybd_event(65,0,0,0) #a键位码是86 win32api.keybd_event(65,0,win32con.keyeventf_keyup,0) #print get_mouse_point()

def t1(): #mouse_move(1024,470)aa #time.sleep(0.05) #mouse_dclick()hello

mouse_dclick(1024,470)

def t3(): mouse_click(1024,470) str = ‘hello’ for c in str: win32api.keybd_event(vk_code[c],0,0,0) #a键位码是86 win32api.keybd_event(vk_code[c],0,win32con.keyeventf_keyup,0) time.sleep(0.01)

def t4(): mouse_click(1024,470) str = ‘hello’ key_input(str)

if __name__ == “__main__”: t4() #t3() #t2() #t1() t0()