找回密码
 加入
搜索
查看: 3561|回复: 12

有请zldfsz同学 ,有问题请教!(学习中)

 火.. [复制链接]
发表于 2012-3-19 12:14:24 | 显示全部楼层 |阅读模式
本帖最后由 apoorman1986 于 2012-3-19 18:51 编辑

这几天在推敲zldfsz 大师写的2012自动登录代码。
有句代码看不懂。
$usr = "88888888";QQ号
$pwd = "88888888";密码
#include <Process.au3>
$ExistEdit1=0
Run(StringRegExpReplace(RegRead('HKEY_CLASSES_ROOT\Tencent\DefaultIcon', ''), '[^\\]+$', '') & 'QQ.exe')
WinWait("QQ2012")
$Newusr = StringRegExp($usr, "(.)", 3)
$Newpwd = StringRegExp($pwd, "(.)", 3)
Do                                                      
        $list=WinList('[class:TXGuiFoundation]')
        For $u=1 To $list[0][0]
                $LPID=WinGetProcess($list[$u][1])
                If _ProcessGetName($LPID)="QQ.exe" Then
                        $POS=WinGetPos($list[$u][1])
                        $ExistEdit1=ControlSend($list[$u][1], "", "Edit1", "+{tab}")
                        If $ExistEdit1 Then
                                Local $QQ[5]=[$list[$u][1],$POS[0],$POS[1],$POS[2],$POS[3]]
                                ExitLoop
                        EndIf
                EndIf
        Next
        Sleep(300)
Until $ExistEdit1
Do 
        Sleep(300)
Until ControlSend($QQ[0], "", "Edit1", "+{tab}")
For $n = 0 To StringLen($usr) - 1
        ControlSend($QQ[0], "", "", $Newusr[$n],1)
Next
For $n = 0 To 15
        ControlSend($QQ[0], "", "Edit1", "{BS}")
Next
For $n = 0 To StringLen($pwd) - 1
        ControlSend($QQ[0], "", "Edit1", $Newpwd[$n],1)
Next
ControlSend($QQ[0], "", "Edit1", "{enter}")
最后的几个循环,有一个
For $n = 0 To 15
ControlSend($QQ[0], "", "Edit1", "{BS}")
Next
整个循环都没有用过$n,这个循环何解?
发表于 2012-3-19 12:27:01 | 显示全部楼层
回复 1# apoorman1986


   真是折煞我也,先把标题改了吧,这大师我可承受不起,再说你这标题也不符合发帖规则
发表于 2012-3-19 13:03:12 | 显示全部楼层
zldfsz 大师
还在寺庙 念经啊
 楼主| 发表于 2012-3-19 18:42:08 | 显示全部楼层
回复 2# zldfsz

这是水区,随便聊聊,反而没多少人看到
发表于 2012-3-19 18:44:52 | 显示全部楼层
水区也得符合发帖规则,至少把标题改下
 楼主| 发表于 2012-3-19 18:47:34 | 显示全部楼层
已改好回复 5# zldfsz
发表于 2012-3-19 18:57:38 | 显示全部楼层
For $n = 0 To 15
ControlSend($QQ[0], "", "Edit1", "{BS}")
Next
这个的作用是在密码输入框敲16次退格键
看起来好像没什么作用
但是不加上有可能会出问题,什么情况下会出问题呢,你可以试下:将以上三行注释掉、将qq记住密码登录一次后退出,再用刚才的QQ通过代码登录试试,是不是出错了
所以这三行就是不管有没有记住密码,登录时先删掉密码,再重新输入
 楼主| 发表于 2012-3-19 19:00:33 | 显示全部楼层
回复 7# zldfsz

这句
  ControlSend($QQ[0], "", "Edit1", "{BS}")

怎么没看到有$n在里面?可以省略吗?
发表于 2012-3-19 19:11:01 | 显示全部楼层
ControlSend ( "标题", "文本", 控件ID, "字符串" [, 标志] )
这句就是发送退格键,这里的字符串就是 {BS} 退格键(Backspace)
加上For $n = 0 To 15以后就是循环发送16次(因为QQ密码最多16位)。
有谁给你说for循环里必须有循环变量吗
 楼主| 发表于 2012-3-19 19:21:44 | 显示全部楼层
本帖最后由 apoorman1986 于 2012-3-19 19:23 编辑

回复 9# zldfsz


    原来如此!多谢zldfsz兄从百忙中抽出时间回答我的菜鸟问题,谢谢!谢谢!

我习惯性for $i
然后把$i嵌在函数中~~!!
发表于 2012-3-19 20:43:54 | 显示全部楼层
收藏了,感谢分享
发表于 2012-3-19 20:44:00 | 显示全部楼层
原来如此!多谢
发表于 2012-3-24 19:24:15 | 显示全部楼层
叫"大湿"好听些还是
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-25 18:46 , Processed in 0.081724 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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