找回密码
 加入
搜索
查看: 4736|回复: 8

[图形处理] 求大神给个思路,更好的判断QQ登陆验证码的出现.

  [复制链接]
发表于 2013-3-14 23:17:53 | 显示全部楼层 |阅读模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-3-14 23:22:39 | 显示全部楼层
自己先顶顶···  本人笨拙,以下是判断的源码,但并没有实际判断成功.

        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
发表于 2013-3-16 15:39:05 | 显示全部楼层
回复 1# 66343022


    用读取控件上的文本这种方法来判断行不?我没试过你可以试下。
发表于 2013-3-17 00:50:54 | 显示全部楼层
检测这个框干啥? 不至于想要暴力破解吧?
发表于 2013-3-17 01:38:41 | 显示全部楼层
回复 2# 66343022

用这个试试,用它拿去修改吧,这里有一个缺点就是会移动几下鼠标
Global $h_QQ
Local $var = WinList()
For $i = 1 To $var[0][0]
    ; 只显示有标题的可见窗口
    If $var[$i][0] <> "" And IsVisible($var[$i][1]) Then
        ;MsgBox(0, "详细信息", "标题 = '" & $var[$i][0] & "'" & @LF & "句柄 ='" & $var[$i][1] & "'")
                If StringRegExp($var[$i][0], "QQ201") Then
                        ;搜寻QQ窗体,并找到句柄
                        $h_QQ = $var[$i][1]
                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[0]
$iQQy = $aTemp[1]

; 保存当前鼠标位置
$aTemp = MouseGetPos()
$ix = $aTemp[0]
$iy = $aTemp[1]

;=== 移动鼠标,根据对目标窗体的特征点的鼠标光标来判断是否检测到目标窗体
$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
发表于 2013-3-18 18:38:21 | 显示全部楼层
好人啊  源代码都放出来了非常感谢
发表于 2013-3-19 08:36:23 | 显示全部楼层
新手报到,收下学习学习~
 楼主| 发表于 2013-3-22 08:04:07 | 显示全部楼层
不胜感激``` 有源码学习学习了。
 楼主| 发表于 2013-3-22 08:07:40 | 显示全部楼层
测试了,可行!很准确的说
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-28 12:47 , Processed in 0.081368 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表