zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python在windows下模拟按键和鼠标点击代码详解编程语言

2023-06-13 09:20:24 时间

这段代码可以模拟在窗口上按下按键、鼠标左键点击、鼠标右键点击、鼠标双击等等

# 

# _*_ coding:UTF-8 _*_ 

import win32api 

import win32con 

import win32gui 

from 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, 

 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} 

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) 

 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 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_LEFTUP, 0, 0, 0, 0) 

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

 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 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) 

if __name__ == "__main__": 

 mouse_click(1024,470) 

 str = hello 

 key_input(str)

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/8443.html

cjava