python 模拟键盘输入英文单词的时候出现空过的现象,是不是跟ord()这里有关系?
本文介绍了python 模拟键盘输入英文单词的时候出现空过的现象,是不是跟ord()这里有关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
这是一段自动登录QQ的代码
import subprocess
import win32api
import win32con
import time
from ctypes import *
def an(qq): #自定义 键盘输入
for i in qq:
#print(i)
win32api.keybd_event(ord(i),0,0,0)
win32api.keybd_event(ord(i),0,win32con.KEYEVENTF_KEYUP,0)
time.sleep(0.5)
qq_exe = r"D:\qq\Bin\QQ.exe" #打开QQ
subprocess.Popen([qq_exe])
time.sleep(5)
windll.user32.SetCursorPos(969, 583)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) #选定QQ账号输出框
time.sleep(0.5)
an("*****") #输入账号
win32api.keybd_event(9,0,0,0)
win32api.keybd_event(9,0,win32con.KEYEVENTF_KEYUP,0) #Tab
an("*******") #输入密码
win32api.keybd_event(13,0,0,0)
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0) #回车
time.sleep(5)
我发现在密码含有英文字母的时候,部分英文字母并没有输入,会直接跳过。
观察了几次,好像"x","q"等都会不输入。纯数字的密码可以完全输入。(只试了四五组,可能不准确)
请问这是什么情况?
解决方案
可以参考 Virtual-Key Codes
https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
pywin32是封装这个
你看了一下就会发现 只有 大写的'A' - 'Z'
没有小写的'a' - 'z'
你想了一下我们正常的键盘输入就知道了
普通按 A
(键盘上的键位) 在大写字母灯没亮的时候输入的是 a
所以对于想要输入"q"
你应该用的是ord("q".upper())
那么怎么输入大写的A
呢, 举一反三, 相信大家肯定会
这篇关于python 模拟键盘输入英文单词的时候出现空过的现象,是不是跟ord()这里有关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文