apoorman1986 发表于 2012-3-19 12:14:24

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

本帖最后由 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('')
      For $u=1 To $list
                $LPID=WinGetProcess($list[$u])
                If _ProcessGetName($LPID)="QQ.exe" Then
                        $POS=WinGetPos($list[$u])
                        $ExistEdit1=ControlSend($list[$u], "", "Edit1", "+{tab}")
                        If $ExistEdit1 Then
                              Local $QQ=[$list[$u],$POS,$POS,$POS,$POS]
                              ExitLoop
                        EndIf
                EndIf
      Next
      Sleep(300)
Until $ExistEdit1
Do
      Sleep(300)
Until ControlSend($QQ, "", "Edit1", "+{tab}")
For $n = 0 To StringLen($usr) - 1
      ControlSend($QQ, "", "", $Newusr[$n],1)
Next
For $n = 0 To 15
      ControlSend($QQ, "", "Edit1", "{BS}")
Next
For $n = 0 To StringLen($pwd) - 1
      ControlSend($QQ, "", "Edit1", $Newpwd[$n],1)
Next
ControlSend($QQ, "", "Edit1", "{enter}")

最后的几个循环,有一个
For $n = 0 To 15
ControlSend($QQ, "", "Edit1", "{BS}")
Next
整个循环都没有用过$n,这个循环何解?

zldfsz 发表于 2012-3-19 12:27:01

回复 1# apoorman1986


   真是折煞我也,先把标题改了吧,这大师我可承受不起,再说你这标题也不符合发帖规则

vason1019 发表于 2012-3-19 13:03:12

{:face (113):}zldfsz 大师
还在寺庙 念经啊

apoorman1986 发表于 2012-3-19 18:42:08

回复 2# zldfsz

这是水区,随便聊聊,反而没多少人看到{:face (355):}

zldfsz 发表于 2012-3-19 18:44:52

水区也得符合发帖规则,至少把标题改下

apoorman1986 发表于 2012-3-19 18:47:34

{:face (361):}已改好回复 5# zldfsz

zldfsz 发表于 2012-3-19 18:57:38

For $n = 0 To 15
ControlSend($QQ, "", "Edit1", "{BS}")
Next
这个的作用是在密码输入框敲16次退格键
看起来好像没什么作用
但是不加上有可能会出问题,什么情况下会出问题呢,你可以试下:将以上三行注释掉、将qq记住密码登录一次后退出,再用刚才的QQ通过代码登录试试,是不是出错了
所以这三行就是不管有没有记住密码,登录时先删掉密码,再重新输入

apoorman1986 发表于 2012-3-19 19:00:33

回复 7# zldfsz

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

怎么没看到有$n在里面?可以省略吗?

zldfsz 发表于 2012-3-19 19:11:01

ControlSend ( "标题", "文本", 控件ID, "字符串" [, 标志] )
这句就是发送退格键,这里的字符串就是 {BS} 退格键(Backspace)
加上For $n = 0 To 15以后就是循环发送16次(因为QQ密码最多16位)。
有谁给你说for循环里必须有循环变量吗

apoorman1986 发表于 2012-3-19 19:21:44

本帖最后由 apoorman1986 于 2012-3-19 19:23 编辑

{:face (88):}回复 9# zldfsz


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

我习惯性for $i
然后把$i嵌在函数中~~!!{:face (207):}

ggxxaajj 发表于 2012-3-19 20:43:54

收藏了,感谢分享

ggxxaajj 发表于 2012-3-19 20:44:00

原来如此!多谢

502762378 发表于 2012-3-24 19:24:15

叫"大湿"好听些还是
页: [1]
查看完整版本: 有请zldfsz同学 ,有问题请教!(学习中)