求大神给个思路,更好的判断QQ登陆验证码的出现.
自己先顶顶···本人笨拙,以下是判断的源码,但并没有实际判断成功.While 1
Sleep(200)
Local $a_Pot1 = PixelSearch(40, 50, 80, 90, 0xED7210, 0, 1, $h_Wnd);黄色警告
If IsArray($a_Pot1) Then
Local $a_Pot2 = PixelSearch(280, 240, 360, 250, 0x2685E3, 0, 1, $h_Wnd);蓝色提示“设置登录保护”
If IsArray($a_Pot2) Then;验证码出现?
ToolTip("拉取验证码...", 0,0)
Else
ToolTip("密码错误或其他情况...", 0,0)
EndIf
EndIf
WEnd 回复 1# 66343022
用读取控件上的文本这种方法来判断行不?我没试过你可以试下。 检测这个框干啥? 不至于想要暴力破解吧? 回复 2# 66343022
用这个试试,用它拿去修改吧,这里有一个缺点就是会移动几下鼠标Global $h_QQ
Local $var = WinList()
For $i = 1 To $var
; 只显示有标题的可见窗口
If $var[$i] <> "" And IsVisible($var[$i]) Then
;MsgBox(0, "详细信息", "标题 = '" & $var[$i] & "'" & @LF & "句柄 ='" & $var[$i] & "'")
If StringRegExp($var[$i], "QQ201") Then
;搜寻QQ窗体,并找到句柄
$h_QQ = $var[$i]
EndIf
EndIf
Next
Func IsVisible($handle)
If BitAND(WinGetState($handle), 2) Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>IsVisible
Sleep(2000)
; 激活QQ窗体
$sRtn = WinActivate($h_QQ, "")
If $sRtn = 0 Then
MsgBox(0, "Error!", "激活QQ窗体失败!")
Exit
EndIf
; 获得QQ登录窗体的位置
$aTemp = WinGetPos($h_QQ)
$iQQx = $aTemp
$iQQy = $aTemp
; 保存当前鼠标位置
$aTemp = MouseGetPos()
$ix = $aTemp
$iy = $aTemp
;=== 移动鼠标,根据对目标窗体的特征点的鼠标光标来判断是否检测到目标窗体
$str = ""
MouseMove(280 + $iQQx, 96 + $iQQy)
$iRtn = MouseGetCursor()
$str = $str & $iRtn
;ConsoleWrite("$iRtn is " & $iRtn & @CRLF)
MouseMove(280 + $iQQx, 200 + $iQQy)
$iRtn = MouseGetCursor()
$str = $str & $iRtn
;ConsoleWrite("$iRtn is " & $iRtn & @CRLF)
MouseMove(280 + $iQQx, 230 + $iQQy)
$iRtn = MouseGetCursor()
$str = $str & $iRtn
;ConsoleWrite("$iRtn is " & $iRtn & @CRLF)
If $str = "5216" Then
MsgBox(0, "Note", "验证码出现!")
EndIf 好人啊源代码都放出来了非常感谢 新手报到,收下学习学习~ 不胜感激``` 有源码学习学习了。 测试了,可行!很准确的说
页:
[1]