python 模拟键盘输入英文单词的时候出现空过的现象,是不是跟ord()这里有关系?

查看:168
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆