学习了knighthood2001 博主的uiautomation相关文章后,将其部分博文汇总,方便自己后续使用时进行查阅。具体可进入knighthood2001的博文进行详细学习。传送门-点我
在uiautomation自动化中,有时候可能很难做到真正意义上的自动化,需要人手动去停止运行代码,比如之前本系列写的【uiautomation】微信好友列表获取(存储到txt中),当滚轮滚到底时,需要人工结束运行代码,并将最后的几个微信好友昵称获取,提取主要代码(如下)
flag = True
while flag:
# 空格
if auto.IsKeyPressed(auto.Keys.VK_SPACE):
flag = False
以上就实现了代码运行后,按空格结束运行的过程。
一般来说,auto.IsKeyPressed()函数中跟的是某个指令,可以是键盘上某个键的,也可以输入某个大写字母或数字,也可以鼠标左键这个指令等。
uiautomation中有三种类似的实现以上过程,(XXX需要更改)
①auto.Keys.XXX,如auto.Keys.VK_SPACE
②auto.SpecialKeyNames['XXX'],如auto.SpecialKeyNames['ESC']
③auto.CharacterCodes['XXX'],如auto.CharacterCodes['0']
import uiautomation as auto
while True:
# 输入空格(auto.Keys.VK_SPACE)
if auto.IsKeyPressed(auto.Keys.VK_SPACE):
break
# 输入ESC(auto.SpecialKeyNames)
if auto.IsKeyPressed(auto.SpecialKeyNames['ESC']):
break
# 输入0(auto.CharacterCodes)
if auto.IsKeyPressed(auto.CharacterCodes['0']):
break
注:其中=和后面的4个字符可以忽略
需要的键的指令可以在下面找到(常见的笔者已经加粗了)
VK_LBUTTON = 0x01 鼠标左键
VK_RBUTTON = 0x02 鼠标右键
VK_CANCEL = 0x03 控制中断处理
VK_MBUTTON = 0x04 鼠标中键(三键鼠标)
VK_XBUTTON1 = 0x05 X1 鼠标按键
VK_XBUTTON2 = 0x06 X2 鼠标按键
VK_BACK = 0x08 退格键
VK_TAB = 0x09 TAB 键
VK_CLEAR = 0x0C 清除键
VK_RETURN = 0x0D 回车键
VK_ENTER = 0x0D
VK_SHIFT = 0x10 SHIFT 键
VK_CONTROL = 0x11 CTRL 键
VK_MENU = 0x12 ALT 键
VK_PAUSE = 0x13 暂停键
VK_CAPITAL = 0x14 大写锁定键
VK_KANA = 0x15 IME 假名模式
VK_HANGUEL = 0x15 IME Hanguel 模式(保持兼容性;使用 VK_HANGUL)
VK_HANGUL = 0x15 IME 韩文模式
VK_JUNJA = 0x17 IME Junja 模式
VK_FINAL = 0x18 IME 最终模式
VK_HANJA = 0x19 IME 汉字模式
VK_KANJI = 0x19 IME 汉字模式
VK_ESCAPE = 0x1B ESC键
VK_CONVERT = 0x1C IME 转换
VK_NONCONVERT = 0x1D IME 非转换
VK_ACCEPT = 0x1E IME 接受
VK_MODECHANGE = 0x1F IME 模式更改请求
VK_SPACE = 0x20 空格键
VK_PRIOR = 0x21 PAGE UP 键
VK_PAGEUP = 0x21
VK_NEXT = 0x22 PAGE DOWN 键
VK_PAGEDOWN = 0x22
VK_END = 0x23 结束键
VK_HOME = 0x24 主页键
VK_LEFT = 0x25 左箭头键
VK_UP = 0x26 向上箭头键
VK_RIGHT = 0x27 右箭头键
VK_DOWN = 0x28 向下箭头键
VK_SELECT = 0x29 选择键
VK_PRINT = 0x2A 打印键
VK_EXECUTE = 0x2B 执行键
VK_SNAPSHOT = 0x2C 打印屏幕键
VK_INSERT = 0x2D INS 键
VK_DELETE = 0x2E DEL 键
VK_HELP = 0x2F 帮助 键
VK_0 = 0x30 0 键
VK_1 = 0x31 1 键
VK_2 = 0x32 2 键
VK_3 = 0x33 3 键
VK_4 = 0x34 4 键
VK_5 = 0x35 5 键
VK_6 = 0x36 6 键
VK_7 = 0x37 7 键
VK_8 = 0x38 8 键
VK_9 = 0x39 9 键
VK_A = 0x41 A 键
VK_B = 0x42 B 键
VK_C = 0x43 C 键
VK_D = 0x44 D 键
VK_E = 0x45 E 键
VK_F = 0x46 F 键
VK_G = 0x47 G 键
VK_H = 0x48 H 键
VK_I = 0x49 I 键
VK_J = 0x4A J 键
VK_K = 0x4B K 键
VK_L = 0x4C L键
VK_M = 0x4D M 键
VK_N = 0x4E N 键
VK_O = 0x4F O 键
VK_P = 0x50 P 键
VK_Q = 0x51 Q 键
VK_R = 0x52 R 键
VK_S = 0x53 S 键
VK_T = 0x54 T 键
VK_U = 0x55 U 键
VK_V = 0x56 V键
VK_W = 0x57 W 键
VK_X = 0x58 X 键
VK_Y = 0x59 Y 键
VK_Z = 0x5A Z 键
VK_LWIN = 0x5B 左 Windows 键(自然键盘)
VK_RWIN = 0x5C 右 Windows 键(自然键盘)
VK_APPS = 0x5D 应用程序键(自然键盘)
VK_SLEEP = 0x5F 计算机睡眠键
VK_NUMPAD0 = 0x60 数字键盘 0 键
VK_NUMPAD1 = 0x61 数字键盘 1 键
VK_NUMPAD2 = 0x62 数字键盘 2 键
VK_NUMPAD3 = 0x63 数字键盘 3 键
VK_NUMPAD4 = 0x64 数字键盘 4 键
VK_NUMPAD5 = 0x65 数字键盘 5 键
VK_NUMPAD6 = 0x66 数字键盘 6 键
VK_NUMPAD7 = 0x67 数字键盘 7 键
VK_NUMPAD8 = 0x68 数字键盘 8 键
VK_NUMPAD9 = 0x69 数字键盘 9 键
VK_MULTIPLY = 0x6A 乘法键
VK_ADD = 0x6B 添加键
VK_SEPARATOR = 0x6C 分隔键
VK_SUBTRACT = 0x6D 减去键
VK_DECIMAL = 0x6E 十进制键
VK_DIVIDE = 0x6F 除法键
VK_F1 = 0x70 F1 键
VK_F2 = 0x71 F2 键
VK_F3 = 0x72 F3 键
VK_F4 = 0x73 F4键
VK_F5 = 0x74 F5 键
VK_F6 = 0x75 F6 键
VK_F7 = 0x76 F7 键
VK_F8 = 0x77 F8 键
VK_F9 = 0x78 F9 键
VK_F10 = 0x79 F10 键
VK_F11 = 0x7A F11 键
VK_F12 = 0x7B F12 键
VK_F13 = 0x7C F13 键
VK_F14 = 0x7D F14 键
VK_F15 = 0x7E F15 键
VK_F16 = 0x7F F16 键
VK_F17 = 0x80 F17 键
VK_F18 = 0x81 F18 键
VK_F19 = 0x82 F19 键
VK_F20 = 0x83 F20 键
VK_F21 = 0x84 F21 键
VK_F22 = 0x85 F22 键
VK_F23 = 0x86 F23 键
VK_F24 = 0x87 F24 键
VK_NUMLOCK = 0x90 NUM LOCK 键
VK_SCROLL = 0x91 滚动锁定键
VK_LSHIFT = 0xA0 左 SHIFT 键
VK_RSHIFT = 0xA1 右 SHIFT 键
VK_LCONTROL = 0xA2 左 CONTROL 键
VK_RCONTROL = 0xA3 右 CONTROL 键
VK_LMENU = 0xA4 左菜单键
VK_RMENU = 0xA5 右菜单键
VK_BROWSER_BACK = 0xA6 浏览器返回键
VK_BROWSER_FORWARD = 0xA7 浏览器转发键
VK_BROWSER_REFRESH = 0xA8 浏览器刷新键
VK_BROWSER_STOP = 0xA9 浏览器停止键
VK_BROWSER_SEARCH = 0xAA 浏览器搜索键
VK_BROWSER_FAVORITES = 0xAB 浏览器收藏夹键
VK_BROWSER_HOME = 0xAC 浏览器启动和主页键
VK_VOLUME_MUTE = 0xAD 音量静音键
VK_VOLUME_DOWN = 0xAE 降低音量键
VK_VOLUME_UP = 0xAF 提高音量键
VK_MEDIA_NEXT_TRACK = 0xB0 下一曲目键
VK_MEDIA_PREV_TRACK = 0xB1 前一曲目键
VK_MEDIA_STOP = 0xB2 停止媒体键
VK_MEDIA_PLAY_PAUSE = 0xB3 播放暂停媒体键
VK_LAUNCH_MAIL = 0xB4 开始邮件键
VK_LAUNCH_MEDIA_SELECT = 0xB5 选择媒体键
VK_LAUNCH_APP1 = 0xB6 启动应用程序 1 键
VK_LAUNCH_APP2 = 0xB7 启动应用程序 2 键
VK_OEM_1 = 0xBA 用于杂项字符;它可能因键盘而异。对于美国标准键盘,';:' 键
VK_OEM_PLUS = 0xBB 对于任何国家地区,“+”键
VK_OEM_COMMA = 0xBC 对于任何国家地区,',' 键
VK_OEM_MINUS = 0xBD 对于任何国家地区,'-' 键
VK_OEM_PERIOD = 0xBE 对于任何国家地区,'.'钥匙
VK_OEM_2 = 0xBF 用于杂项字符;它可能因键盘而异。对于美国标准键盘,“?”钥匙
VK_OEM_3 = 0xC0 用于杂项字符;它可能因键盘而异。对于美国标准键盘,'`~' 键
VK_OEM_4 = 0xDB 用于杂项字符;它可能因键盘而异。对于美国标准键盘,'[{' 键
VK_OEM_5 = 0xDC 用于杂项字符;它可能因键盘而异。对于美国标准键盘,'\|'钥匙
VK_OEM_6 = 0xDD 用于杂项字符;它可能因键盘而异。对于美国标准键盘,']}' 键
VK_OEM_7 = 0xDE 用于杂项字符;它可能因键盘而异。对于美国标准键盘,“单引号双引号”键
VK_OEM_8 = 0xDF 用于杂项字符;它可能因键盘而异。
VK_OEM_102 = 0xE2 RT 102 键键盘上的尖括号键或反斜杠键
VK_PROCESSKEY = 0xE5 IME 处理键
VK_PACKET = 0xE7 用于传递 Unicode 字符,就好像它们是击键一样。
VK_ATTN = 0xF6 Attn 键
VK_CRSEL = 0xF7 CrSel 键
VK_EXSEL = 0xF8 ExSel 键
VK_EREOF = 0xF9 擦除 EOF 键
VK_PLAY = 0xFA 播放键
VK_ZOOM = 0xFB 缩放键
VK_NONAME = 0xFC 保留
VK_PA1 = 0xFD PA1 键
VK_OEM_CLEAR = 0xFE 清除键
代码具体如下,可以看出SpecialKeyNames是一个字典,其中的值为①中的内容,因此可以通过字典中的键获取其值,如auto.SpecialKeyNames[‘ESC’]
SpecialKeyNames = {
'LBUTTON': Keys.VK_LBUTTON, #Left mouse button
'RBUTTON': Keys.VK_RBUTTON, #Right mouse button
'CANCEL': Keys.VK_CANCEL, #Control-break processing
'MBUTTON': Keys.VK_MBUTTON, #Middle mouse button (three-button mouse)
'XBUTTON1': Keys.VK_XBUTTON1, #X1 mouse button
'XBUTTON2': Keys.VK_XBUTTON2, #X2 mouse button
'BACK': Keys.VK_BACK, #BACKSPACE key
'TAB': Keys.VK_TAB, #TAB key
'CLEAR': Keys.VK_CLEAR, #CLEAR key
'RETURN': Keys.VK_RETURN, #ENTER key
'ENTER': Keys.VK_RETURN, #ENTER key
'SHIFT': Keys.VK_SHIFT, #SHIFT key
'CTRL': Keys.VK_CONTROL, #CTRL key
'CONTROL': Keys.VK_CONTROL, #CTRL key
'ALT': Keys.VK_MENU, #ALT key
'PAUSE': Keys.VK_PAUSE, #PAUSE key
'CAPITAL': Keys.VK_CAPITAL, #CAPS LOCK key
'KANA': Keys.VK_KANA, #IME Kana mode
'HANGUEL': Keys.VK_HANGUEL, #IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
'HANGUL': Keys.VK_HANGUL, #IME Hangul mode
'JUNJA': Keys.VK_JUNJA, #IME Junja mode
'FINAL': Keys.VK_FINAL, #IME final mode
'HANJA': Keys.VK_HANJA, #IME Hanja mode
'KANJI': Keys.VK_KANJI, #IME Kanji mode
'ESC': Keys.VK_ESCAPE, #ESC key
'ESCAPE': Keys.VK_ESCAPE, #ESC key
'CONVERT': Keys.VK_CONVERT, #IME convert
'NONCONVERT': Keys.VK_NONCONVERT, #IME nonconvert
'ACCEPT': Keys.VK_ACCEPT, #IME accept
'MODECHANGE': Keys.VK_MODECHANGE, #IME mode change request
'SPACE': Keys.VK_SPACE, #SPACEBAR
'PRIOR': Keys.VK_PRIOR, #PAGE UP key
'PAGEUP': Keys.VK_PRIOR, #PAGE UP key
'NEXT': Keys.VK_NEXT, #PAGE DOWN key
'PAGEDOWN': Keys.VK_NEXT, #PAGE DOWN key
'END': Keys.VK_END, #END key
'HOME': Keys.VK_HOME, #HOME key
'LEFT': Keys.VK_LEFT, #LEFT ARROW key
'UP': Keys.VK_UP, #UP ARROW key
'RIGHT': Keys.VK_RIGHT, #RIGHT ARROW key
'DOWN': Keys.VK_DOWN, #DOWN ARROW key
'SELECT': Keys.VK_SELECT, #SELECT key
'PRINT': Keys.VK_PRINT, #PRINT key
'EXECUTE': Keys.VK_EXECUTE, #EXECUTE key
'SNAPSHOT': Keys.VK_SNAPSHOT, #PRINT SCREEN key
'PRINTSCREEN': Keys.VK_SNAPSHOT, #PRINT SCREEN key
'INSERT': Keys.VK_INSERT, #INS key
'INS': Keys.VK_INSERT, #INS key
'DELETE': Keys.VK_DELETE, #DEL key
'DEL': Keys.VK_DELETE, #DEL key
'HELP': Keys.VK_HELP, #HELP key
'WIN': Keys.VK_LWIN, #Left Windows key (Natural keyboard)
'LWIN': Keys.VK_LWIN, #Left Windows key (Natural keyboard)
'RWIN': Keys.VK_RWIN, #Right Windows key (Natural keyboard)
'APPS': Keys.VK_APPS, #Applications key (Natural keyboard)
'SLEEP': Keys.VK_SLEEP, #Computer Sleep key
'NUMPAD0': Keys.VK_NUMPAD0, #Numeric keypad 0 key
'NUMPAD1': Keys.VK_NUMPAD1, #Numeric keypad 1 key
'NUMPAD2': Keys.VK_NUMPAD2, #Numeric keypad 2 key
'NUMPAD3': Keys.VK_NUMPAD3, #Numeric keypad 3 key
'NUMPAD4': Keys.VK_NUMPAD4, #Numeric keypad 4 key
'NUMPAD5': Keys.VK_NUMPAD5, #Numeric keypad 5 key
'NUMPAD6': Keys.VK_NUMPAD6, #Numeric keypad 6 key
'NUMPAD7': Keys.VK_NUMPAD7, #Numeric keypad 7 key
'NUMPAD8': Keys.VK_NUMPAD8, #Numeric keypad 8 key
'NUMPAD9': Keys.VK_NUMPAD9, #Numeric keypad 9 key
'MULTIPLY': Keys.VK_MULTIPLY, #Multiply key
'ADD': Keys.VK_ADD, #Add key
'SEPARATOR': Keys.VK_SEPARATOR, #Separator key
'SUBTRACT': Keys.VK_SUBTRACT, #Subtract key
'DECIMAL': Keys.VK_DECIMAL, #Decimal key
'DIVIDE': Keys.VK_DIVIDE, #Divide key
'F1': Keys.VK_F1, #F1 key
'F2': Keys.VK_F2, #F2 key
'F3': Keys.VK_F3, #F3 key
'F4': Keys.VK_F4, #F4 key
'F5': Keys.VK_F5, #F5 key
'F6': Keys.VK_F6, #F6 key
'F7': Keys.VK_F7, #F7 key
'F8': Keys.VK_F8, #F8 key
'F9': Keys.VK_F9, #F9 key
'F10': Keys.VK_F10, #F10 key
'F11': Keys.VK_F11, #F11 key
'F12': Keys.VK_F12, #F12 key
'F13': Keys.VK_F13, #F13 key
'F14': Keys.VK_F14, #F14 key
'F15': Keys.VK_F15, #F15 key
'F16': Keys.VK_F16, #F16 key
'F17': Keys.VK_F17, #F17 key
'F18': Keys.VK_F18, #F18 key
'F19': Keys.VK_F19, #F19 key
'F20': Keys.VK_F20, #F20 key
'F21': Keys.VK_F21, #F21 key
'F22': Keys.VK_F22, #F22 key
'F23': Keys.VK_F23, #F23 key
'F24': Keys.VK_F24, #F24 key
'NUMLOCK': Keys.VK_NUMLOCK, #NUM LOCK key
'SCROLL': Keys.VK_SCROLL, #SCROLL LOCK key
'LSHIFT': Keys.VK_LSHIFT, #Left SHIFT key
'RSHIFT': Keys.VK_RSHIFT, #Right SHIFT key
'LCONTROL': Keys.VK_LCONTROL, #Left CONTROL key
'LCTRL': Keys.VK_LCONTROL, #Left CONTROL key
'RCONTROL': Keys.VK_RCONTROL, #Right CONTROL key
'RCTRL': Keys.VK_RCONTROL, #Right CONTROL key
'LALT': Keys.VK_LMENU, #Left MENU key
'RALT': Keys.VK_RMENU, #Right MENU key
'BROWSER_BACK': Keys.VK_BROWSER_BACK, #Browser Back key
'BROWSER_FORWARD': Keys.VK_BROWSER_FORWARD, #Browser Forward key
'BROWSER_REFRESH': Keys.VK_BROWSER_REFRESH, #Browser Refresh key
'BROWSER_STOP': Keys.VK_BROWSER_STOP, #Browser Stop key
'BROWSER_SEARCH': Keys.VK_BROWSER_SEARCH, #Browser Search key
'BROWSER_FAVORITES': Keys.VK_BROWSER_FAVORITES, #Browser Favorites key
'BROWSER_HOME': Keys.VK_BROWSER_HOME, #Browser Start and Home key
'VOLUME_MUTE': Keys.VK_VOLUME_MUTE, #Volume Mute key
'VOLUME_DOWN': Keys.VK_VOLUME_DOWN, #Volume Down key
'VOLUME_UP': Keys.VK_VOLUME_UP, #Volume Up key
'MEDIA_NEXT_TRACK': Keys.VK_MEDIA_NEXT_TRACK, #Next Track key
'MEDIA_PREV_TRACK': Keys.VK_MEDIA_PREV_TRACK, #Previous Track key
'MEDIA_STOP': Keys.VK_MEDIA_STOP, #Stop Media key
'MEDIA_PLAY_PAUSE': Keys.VK_MEDIA_PLAY_PAUSE, #Play/Pause Media key
'LAUNCH_MAIL': Keys.VK_LAUNCH_MAIL, #Start Mail key
'LAUNCH_MEDIA_SELECT': Keys.VK_LAUNCH_MEDIA_SELECT,#Select Media key
'LAUNCH_APP1': Keys.VK_LAUNCH_APP1, #Start Application 1 key
'LAUNCH_APP2': Keys.VK_LAUNCH_APP2, #Start Application 2 key
'OEM_1': Keys.VK_OEM_1, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the ';:' key
'OEM_PLUS': Keys.VK_OEM_PLUS, #For any country/region, the '+' key
'OEM_COMMA': Keys.VK_OEM_COMMA, #For any country/region, the ',' key
'OEM_MINUS': Keys.VK_OEM_MINUS, #For any country/region, the '-' key
'OEM_PERIOD': Keys.VK_OEM_PERIOD, #For any country/region, the '.' key
'OEM_2': Keys.VK_OEM_2, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the '/?' key
'OEM_3': Keys.VK_OEM_3, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the '`~' key
'OEM_4': Keys.VK_OEM_4, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the '[{' key
'OEM_5': Keys.VK_OEM_5, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the '\|' key
'OEM_6': Keys.VK_OEM_6, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the ']}' key
'OEM_7': Keys.VK_OEM_7, #Used for miscellaneous characters; it can vary by keyboard.For the US standard keyboard, the 'single-quote/double-quote' key
'OEM_8': Keys.VK_OEM_8, #Used for miscellaneous characters; it can vary by keyboard.
'OEM_102': Keys.VK_OEM_102, #Either the angle bracket key or the backslash key on the RT 102-key keyboard
'PROCESSKEY': Keys.VK_PROCESSKEY, #IME PROCESS key
'PACKET': Keys.VK_PACKET, #Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KeyUp
'ATTN': Keys.VK_ATTN, #Attn key
'CRSEL': Keys.VK_CRSEL, #CrSel key
'EXSEL': Keys.VK_EXSEL, #ExSel key
'EREOF': Keys.VK_EREOF, #Erase EOF key
'PLAY': Keys.VK_PLAY, #Play key
'ZOOM': Keys.VK_ZOOM, #Zoom key
'NONAME': Keys.VK_NONAME, #Reserved
'PA1': Keys.VK_PA1, #PA1 key
'OEM_CLEAR': Keys.VK_OEM_CLEAR, #Clear key
}
代码具体如下,可以看出CharacterCodes也是一个字典,其中的值为①中的内容,因此可以通过字典中的键获取其值,如auto.CharacterCodes[‘0’]
CharacterCodes = {
'0': Keys.VK_0, #0 key
'1': Keys.VK_1, #1 key
'2': Keys.VK_2, #2 key
'3': Keys.VK_3, #3 key
'4': Keys.VK_4, #4 key
'5': Keys.VK_5, #5 key
'6': Keys.VK_6, #6 key
'7': Keys.VK_7, #7 key
'8': Keys.VK_8, #8 key
'9': Keys.VK_9, #9 key
'a': Keys.VK_A, #A key
'A': Keys.VK_A, #A key
'b': Keys.VK_B, #B key
'B': Keys.VK_B, #B key
'c': Keys.VK_C, #C key
'C': Keys.VK_C, #C key
'd': Keys.VK_D, #D key
'D': Keys.VK_D, #D key
'e': Keys.VK_E, #E key
'E': Keys.VK_E, #E key
'f': Keys.VK_F, #F key
'F': Keys.VK_F, #F key
'g': Keys.VK_G, #G key
'G': Keys.VK_G, #G key
'h': Keys.VK_H, #H key
'H': Keys.VK_H, #H key
'i': Keys.VK_I, #I key
'I': Keys.VK_I, #I key
'j': Keys.VK_J, #J key
'J': Keys.VK_J, #J key
'k': Keys.VK_K, #K key
'K': Keys.VK_K, #K key
'l': Keys.VK_L, #L key
'L': Keys.VK_L, #L key
'm': Keys.VK_M, #M key
'M': Keys.VK_M, #M key
'n': Keys.VK_N, #N key
'N': Keys.VK_N, #N key
'o': Keys.VK_O, #O key
'O': Keys.VK_O, #O key
'p': Keys.VK_P, #P key
'P': Keys.VK_P, #P key
'q': Keys.VK_Q, #Q key
'Q': Keys.VK_Q, #Q key
'r': Keys.VK_R, #R key
'R': Keys.VK_R, #R key
's': Keys.VK_S, #S key
'S': Keys.VK_S, #S key
't': Keys.VK_T, #T key
'T': Keys.VK_T, #T key
'u': Keys.VK_U, #U key
'U': Keys.VK_U, #U key
'v': Keys.VK_V, #V key
'V': Keys.VK_V, #V key
'w': Keys.VK_W, #W key
'W': Keys.VK_W, #W key
'x': Keys.VK_X, #X key
'X': Keys.VK_X, #X key
'y': Keys.VK_Y, #Y key
'Y': Keys.VK_Y, #Y key
'z': Keys.VK_Z, #Z key
'Z': Keys.VK_Z, #Z key
' ': Keys.VK_SPACE, #Space key
'`': Keys.VK_OEM_3, #` key
#'~' : Keys.VK_OEM_3, #~ key
'-': Keys.VK_OEM_MINUS, #- key
#'_' : Keys.VK_OEM_MINUS, #_ key
'=': Keys.VK_OEM_PLUS, #= key
#'+' : Keys.VK_OEM_PLUS, #+ key
'[': Keys.VK_OEM_4, #[ key
#'{' : Keys.VK_OEM_4, #{ key
']': Keys.VK_OEM_6, #] key
#'}' : Keys.VK_OEM_6, #} key
'\\': Keys.VK_OEM_5, #\ key
#'|' : Keys.VK_OEM_5, #| key
';': Keys.VK_OEM_1, #; key
#':' : Keys.VK_OEM_1, #: key
'\'': Keys.VK_OEM_7, #' key
#'"' : Keys.VK_OEM_7, #" key
',': Keys.VK_OEM_COMMA, #, key
#'<' : Keys.VK_OEM_COMMA, #< key
'.': Keys.VK_OEM_PERIOD, #. key
#'>' : Keys.VK_OEM_PERIOD, #> key
'/': Keys.VK_OEM_2, #/ key
#'?' : Keys.VK_OEM_2, #? key
}
单击鼠标左键
Click(x: int, y: int, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标在点 x, y 的点击。
OPERATION_WAIT_TIME默认为0.5
即等待时间默认为0.5秒。
单机鼠标中键
MiddleClick(x: int, y: int, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标在点 x、y 处单击鼠标中键。
模拟鼠标在点 x、y 处单击鼠标中键。
单机鼠标右键
RightClick(x: int, y: int, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标在点 x,y 上单击鼠标右键。
模拟鼠标在点 x,y 上单击鼠标右键。
按鼠标左键
PressMouse(x: int, y: int, waitTime: float = OPERATION_WAIT_TIME)
释放鼠标左键
ReleaseMouse(waitTime: float = OPERATION_WAIT_TIME)
还有按鼠标中键与右键,释放鼠标中键与右键,这里就不细讲了。
还有按鼠标中键与右键,释放鼠标中键与右键,这里就不细讲了。
释放鼠标左键
ReleaseMouse(waitTime: float = OPERATION_WAIT_TIME)
还有按鼠标中键与右键,释放鼠标中键与右键,这里就不细讲了。
RightPressMouse()、RightReleaseMouse()
MiddlePressMouse()、MiddleReleaseMouse()
鼠标移动
MoveTo(x: int, y: int, moveSpeed: float = 1, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标从当前光标移动到点 x, y。
模拟鼠标从当前光标移动到点 x, y。
moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。
鼠标左键拖放
DragDrop(x1: int, y1: int, x2: int, y2: int, moveSpeed: float = 1, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标左键从点 x1、y1 拖放到点 x2、y2。
模拟鼠标左键从点 x1、y1 拖放到点 x2、y2。
moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。
鼠标右键拖放
RightDragDrop(x1: int, y1: int, x2: int, y2: int, moveSpeed: float = 1, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标右键从点 x1、y1 拖放到点 x2、y2。
moveSpeed:1 正常速度,< 1 移动速度较慢,> 1 移动速度更快。
鼠标中键拖放使用MiddleDragDrop()
模拟鼠标右键从点 x1、y1 拖放到点 x2、y2。
鼠标滚轮向下
WheelDown(wheelTimes: int = 1, interval: float = 0.05, waitTime: float = OPERATION_WAIT_TIME)
模拟鼠标滚轮向下。
模拟鼠标滚轮向下。
wheelTimes:轮次,默认为1
interval: 间隔,默认为0.05
waitTime: 等待时间,默认为0.5
鼠标滚轮向上
WheelUp(wheelTimes: int = 1, interval: float = 0.05, waitTime: float = OPERATION_WAIT_TIME)
参数如上
参数如上
获取屏幕尺寸
GetScreenSize()
返回 Tuple[int, int],两个 int 元组(宽度,高度)。
确定窗口是否最小化
IsIconic(handle: int) -> bool
确定本机窗口是否最小化。 handle:本机窗口的句柄。返回布尔值。
确定本机窗口是否最小化。 handle:本机窗口的句柄。返回布尔值。
确定窗口是否最大化
IsZoomed(handle: int) -> bool
确定本机窗口是否最大化。 handle:int,本机窗口的句柄。返回布尔值。
确定本机窗口是否最大化。 handle:int,本机窗口的句柄。返回布尔值。
桌面是否被锁
IsDesktopLocked() -> bool
检查桌面是否被锁定。返回布尔值。如果按 Win+L、Ctrl+Alt+Del 或在远程桌面模式下,桌面将被锁定。
检查桌面是否被锁定。返回布尔值。如果按 Win+L、Ctrl+Alt+Del 或在远程桌面模式下,桌面将被锁定。
键盘输入
SendKey(key: int, waitTime: float = OPERATION_WAIT_TIME)
模拟键入一个键。既可以是平时的字母,也可以是键盘上的一个符号,比如回车,空格。
模拟键入一个键。既可以是平时的字母,也可以是键盘上的一个符号,比如回车,空格。
按下键盘/释放键盘
PressKey()、ReleaseKey()
判断键盘是否被按下
IsKeyPressed(key: int) -> bool
SendKeys('{Ctrl}(AB)') # 表示Ctrl+A+B
SendKeys('{Ctrl}{v 3}') # 表示同时按下 Ctrl+v,松开 Ctrl+v,然后键入'v'2次
SendKeys('{a 3}{B 5}') # 表示输入a3次,b5次
SendKeys('{{Home} {! 3}}') # 根据后面的{},数字前面的符号,可生成对应数量个
标题栏。 显示" 检查 HWND (窗口句柄) 。
菜单栏。 提供对 检查功能 的访问权限。
工具 栏。 提供对 检查功能 的访问权限。
树视图。 将 UI 元素的层次结构呈现为树视图控件,可用于在元素之间导航。
数据视图。 显示所选 UI 元素的所有公开辅助功能属性。
菜单栏中提供的命令也可在工具栏中使用。 下图展示了 Inspect 工具,用于查询记事本中 “编辑” 菜单元素的 UI 自动化属性。
选择此选项后 | 检查 会这样做 |
---|---|
始终位于顶部(Always on Top) | 显示在屏幕上的任何其他窗口的顶部。 |
MSAA 模式(MSAA Mode) | 显示Microsoft Active Accessibility属性信息。 |
UI 自动化模式(UI Automation Mode) | 显示UI 自动化属性信息。 |
原始视图(Raw View) | 在" 树"视图中 UI 自动化树或 MSAA 树的原始视图 。 |
控件视图(Control View) | 在" 树"视图中 UI 自动化树的 控件 视图。 仅在UI 自动化模式下可用。 |
内容视图(Content View) | 在" 树"视图中 UI 自动化树 的内容 视图。 仅在UI 自动化模式下可用。 |
活动悬停工具栏(Active-Hover Toolbar) | 在鼠标悬停时激活工具栏按钮,而无需单击鼠标。 |
出错时发出Epep(Beep on Error) | 在运行或 MSAA 操作期间检测到错误时UI 自动化发出警报。 |
SPI _ SCREENREADER 标志(SPl_SCREENREADER flag) | 假设存在屏幕阅读器。 此标志指示应用程序应以文本方式(而不是图形方式)提供信息。 不应仅仅因为存在屏幕阅读器而设置此标志。 |
显示突出显示矩形(Show Highlight Rectangle) | 突出显示具有焦点的元素周围的矩形。 |
显示 Caret 突出显示(Show Caret Highlight) | 突出显示该点。 仅在 MSAA 模式下可用。 |
显示信息工具提示(Show Information Tooltip) | 在工具提示中显示属性信息。 |
观看焦点(Watch Focus) | 跟随键盘焦点。 选中后,将安装异步焦点事件挂钩,将光标移到具有焦点的元素的左上方。 这将导致 检查 在大约一秒后刷新其属性。 |
监视 Caret(Watch Caret) | 遵循该点。 仅在 MSAA 模式下可用。 |
监视光标(Watch Cursor) | 在光标后。 |
监视工具提示(Watch Tooltips) | 遵循工具提示。 |
显示树(Show Tree) | 显示" 树" 视图。 |
1:Refresh,刷新Tree View(树视图)
2:Copy Text to Clipboard,复制Data View(数据视图)的文本到剪切板
3:Show Settings Dialog,显示Options的Settings
4:剩下的重要按钮在Options中已经讲到,就不再重述了。