QQ自动登入,但是有时候电脑键盘已大写锁定吗,请问大神们这个怎么解决[已解决]
本帖最后由 addfree 于 2017-6-10 21:36 编辑盆友们,最近刚学AU3,主要是为了满足一些自动化操作的需求,试了试自动登入QQ,但是有一个问题,就是有时候电脑键盘会被大写锁定,这个时候自动登入就肯定不行了,有没有什么办法在大写锁定时候写一个语句,自动按下caps lock键? 勾选保存密码和自动登录,登录一次就OK了啊。。 _WinAPI_GetKeyState
检索指定虚拟键的状态
#include <WinAPISys.au3>
_WinAPI_GetKeyState ( $vKey )
参数
$vKey 指定虚拟键 ($VK_*).
虚拟键为字母或数字(A 到 Z, a 到 z 或 0 到 9)
返回值
返回指定虚拟键的状态值.
如果高序位为 1, 键被按下, 反之为松开.
对于切换键, 比如 CAPS LOCK 键, 则打开时低序数位为 1, 关闭时为 0.
切换键打开时键盘上的切换键指示灯(如果有)将点亮, 反之则关闭.
回复 2# fybhwsx 时间自动登入不是重点,只是借QQ自动登入这个例子来学习一些简单的自动操作, 回复 3# yamakawa
不好意思,在请教一下,这个函数是直接调用吗?
If _WinAPI_GetKeyState ( $VK_CAPSLOCK )=1 Then Send({CAPSLOCK})
Else
EndIf
我这样用是不是存在语法错误还是逻辑错误? 本帖最后由 fybhwsx 于 2017-6-10 06:30 编辑
没用过这个函数,但看介绍只是字母和数字,对这个大写键不管用吧?
#include <WinAPISys.au3>
If _WinAPI_GetKeyState ( $VK_CAPSLOCK )=1 Then Send({CAPSLOCK})
If _WinAPI_GetKeyState ( $VK_CAPSLOCK )=1 Then
Send({CAPSLOCK})
Else
EndIf还是善用搜索吧,搜索“大写”,有解决方法。 = =#楼主确认AU3可以输入QQ密码?
我试过不行,我是用大漠实现的 有空尝试了一下,我用的腾讯TIM,QQ应该也可以用。Opt("MouseCoordMode", 2) ;使用客户区的相对坐标(注意修改窗口探测工具的坐标模式)
AutoItSetOption("SendCapslockMode", 0)
Send("{CAPSLOCK OFF}") ;关闭大写
;修改win10输入法默认为英文输入(需要注销或重启计算机一次)
Local $Win10CH_EN = RegRead("HKEY_CURRENT_USER64\SOFTWARE\Microsoft\InputMethod\Settings\CHS", "Default Mode") ;Win10中英文输入默认键值
If $Win10CH_EN <> 1 Then
RegWrite("HKEY_CURRENT_USER64\SOFTWARE\Microsoft\InputMethod\Settings\CHS", "Default Mode", "REG_DWORD", "1")
;RegWrite("HKEY_CURRENT_USER64\SOFTWARE\Microsoft\InputMethod\Settings\CHS", "Enable Cloud Candidate", "REG_DWORD", "0") ;关闭输入云计算
EndIf
WinActivate("TIM") ;激活登录窗口
ControlClick("TIM", "", "", "left", 3, 262, 280) ;3击账号框修改账号
Sleep(500)
ControlSend("TIM", "", "", "1234567") ;ControlSend函数输入QQ号正常
;Send("1234567",1)
ControlClick("TIM", "", "", "left", 3, 263, 305) ;3击密码框
Sleep(500)
;ControlSend("TIM", "", "Edit1", "1234567",1);ControlSend函数这样可以输入,但登录提示密码错误?
Send("1234567", 1) ;这样输入就能登录,问题在哪儿?高手有空试试。。。
;ControlClick("TIM", "", "", "left", 1, 263, 372);点击登陆
;Exit
回复 8# fybhwsx
谢谢f大,今天下午刚看到这个设置选项,没想到现在看到你的提示了,谢谢啊,太谢谢了~ 很高兴能帮到你,一起学习哈。 fybhwsx说只能检查数字或者字母,所以你肯定没试过。。
我是自己写了个小脚本,可以检测到大小写状态才发来的。。。而不是随意猜测
这个是来自帮助文件的
_WinAPI_GetKeyState
检索指定虚拟键的状态
#include <WinAPISys.au3>
_WinAPI_GetKeyState ( $vKey )
参数
$vKey 指定虚拟键 ($VK_*).
虚拟键为字母或数字(A 到 Z, a 到 z 或 0 到 9)
返回值
返回指定虚拟键的状态值.
如果高序位为 1, 键被按下, 反之为松开.
对于切换键, 比如 CAPS LOCK 键, 则打开时低序数位为 1, 关闭时为 0.
切换键打开时键盘上的切换键指示灯(如果有)将点亮, 反之则关闭.
相关
_WinAPI_GetAsyncKeyState
参考资料
点击 GetKeyState 搜索 MSDN 文档库
函数示例
复制到剪切板 #include <WinAPISys.au3>
#include <WinAPIvkeysConstants.au3>
Local $aOnOff = ['OFF', 'ON']
ConsoleWrite('NumLock: ' & $aOnOff & @CRLF)
Sleep(1500)
Send('{NUMLOCK toggle}')
ConsoleWrite('NumLock: ' & $aOnOff & @CRLF)
Sleep(1500)
Send('{NUMLOCK toggle}')
ConsoleWrite('NumLock: ' & $aOnOff & @CRLF)
#include <WinAPISys.au3>
Local $aOnOff = ['OFF', 'ON']
MsgBox(0,'CapsLock: ',$aOnOff);0x14是CapsLock
这个是我自己写的测试代码 这个是我自己写的测试代码
yamakawa 发表于 2017-6-10 23:29 http://www.autoitx.com/images/common/back.gif
抱歉哈,确实不知道这么用,测试有效,学习了! 回复 8# fybhwsx
#include <AutoItConstants.au3>;头文件名
Opt("MouseCoordMode",1);OPT为AutoItSetOption调整函数或参数操作方式的缩写.
;1=默认值
Opt("SendCapslockMode", 0);SendCapslockMode确定 AutoIt 执行 Send() 函数之前,是否保存大小写切换键(CapsLock)的状态,
;并在完成操作后恢复原来的状态.0,不保存,1,保存并恢复。
Send("{CAPSLOCK OFF}");关闭大小写锁定,on,打开。
Run("C:\Program Files (x86)\Tencent\QQIntl\Bin\QQ.exe");按路径打开QQ国际版
WinWait("TXGuiFoundation","密碼",2);等待窗口激活
MouseClick ("left",606,417,1,1);点击密码框,主要是为找到光标以继续下面的指令。
Send("{TAB 12}");按12下tab键让光标运行到账号输入框。
Sleep(1000);亲测可以不延时,这里只做测试用。但是包括以下句子不延时好像容易卡死,不明原因。
Send("账号");输入密码。
;Sleep(1000)
Send("{TAB 1}");将光标移动到密码框。
;Sleep(1000)
Send("密码");输入密码密码
Send("{ENTER}");按下确定键登入
#cs以上是根据论坛朋友提供的思路一个简单的QQ自动登入程序,测几遍,有些BUG,不知道大家还有没有更简单的方法,
@@@@@@@@@@碰到的一些问题@@@@@@@@@@
我为什么会先定位密码框,是因为AU3窗口信息工具无法捕获账号输入框的信息,加上我还不怎么会用这个语言,
所以只能按移动光标的思路来解决问题,但是我还是有些疑问,希望论坛有高手可以给一些提示。
第一个问题,能不能弹出窗口,直接模拟鼠标直接点击账号框,然后点击密码框。注意的是:账号框不能捕获
第二个问题,能不能弹出窗口,先判断一下光标在哪里,1:如果在密码框,就先输入密码,然后将光标移到账号框输入账号
2:如果在账号框,就直接输入账号,然后将光标移动到密码框输入密码
希望大神高手们指点迷津,刚学不久还有点稀里糊涂,多多指教,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!
#ce
跟着你的思路做的,但是有发现了新问题{:face (411):} = =#你先确认一个最基本的问题先,不管大小写,
输入密码是无法登录QQ的
QQ密码控件加密了!!!
页:
[1]
2