python win32 模拟按键
支持组合按键
直接上代码
import win32api
import win32con
key_map = {
"0": 49, "1": 50, "2": 51, "3": 52, "4": 53, "5": 54, "6": 55, "7": 56, "8": 57, "9": 58,
'F1': 112, 'F2': 113, 'F3': 114, 'F4': 115, 'F5': 116, 'F6': 117, 'F7': 118, 'F8': 119,
'F9': 120, 'F10': 121, 'F11': 122, 'F12': 123, 'F13': 124, 'F14': 125, 'F15': 126, 'F16': 127,
"A": 65, "B": 66, "C": 67, "D": 68, "E": 69, "F": 70, "G": 71, "H": 72, "I": 73, "J": 74,
"K": 75, "L": 76, "M": 77, "N": 78, "O": 79, "P": 80, "Q": 81, "R": 82, "S": 83, "T": 84,
"U": 85, "V": 86, "W": 87, "X": 88, "Y": 89, "Z": 90,
'BACKSPACE': 8, 'TAB': 9, 'TABLE': 9, 'CLEAR': 12,
'ENTER': 13, 'SHIFT': 16, 'CTRL': 17,
'CONTROL': 17, 'ALT': 18, 'ALTER': 18, 'PAUSE': 19, 'BREAK': 19, 'CAPSLK': 20, 'CAPSLOCK': 20, 'ESC': 27,
'SPACE': 32, 'SPACEBAR': 32, 'PGUP': 33, 'PAGEUP': 33, 'PGDN': 34, 'PAGEDOWN': 34, 'END': 35, 'HOME': 36,
'LEFT': 37, 'UP': 38, 'RIGHT': 39, 'DOWN': 40, 'SELECT': 41, 'PRTSC': 42, 'PRINTSCREEN': 42, 'SYSRQ': 42,
'SYSTEMREQUEST': 42, 'EXECUTE': 43, 'SNAPSHOT': 44, 'INSERT': 45, 'DELETE': 46, 'HELP': 47, 'WIN': 91,
'WINDOWS': 91, 'NMLK': 144,
'NUMLK': 144, 'NUMLOCK': 144, 'SCRLK': 145}
def release_key(key_code):
"""
函数功能:抬起按键
参 数:key:按键值
"""
win32api.keybd_event(key_code, win32api.MapVirtualKey(key_code, 0), win32con.KEYEVENTF_KEYUP, 0)
def press_key(key_code):
"""
函数功能:按下按键
参 数:key:按键值
"""
win32api.keybd_event(key_code, win32api.MapVirtualKey(key_code, 0), 0, 0)
def press_and_release_key(key_code):
"""
按一下按键
:param key_code: 按键值,如91,代表WIN windows系统的系统按键,弹出开始菜单
:return:
"""
press_key(key_code)
release_key(key_code)
def pressKey(key):
"""
点击按键(按下并抬起)
:param key: 按键,如:F5,ENTER
:return:
"""
if isinstance(key, str):
press_and_release_key(key_map[key.upper()])
elif isinstance(key, int):
press_and_release_key(key)
if __name__ == '__main__':
# pressKey('WIN') # 按下windows系统的系统按键,弹出开始菜单
# 模拟组合按键 9:tap键,18:alt键
press_key(18) # 按下alt键
press_key(9) # 按下tap键
release_key(18) # 松开alt键
release_key(9) # 松开tap键