hooshen 发表于 2008-8-19 15:50:47

QQ2008自动安装脚本的问题,请高人指点

写了一个QQ2008官方正式版的自动安装脚本,其中有一句无论用什么办法也不能自动点击,请各位高人指点。
run("QQ2008KB3.exe")
WinWaitActive("QQ2008 正式版 安装","欢迎使用 QQ2008 正式版 安装向导")
Send("!I")
WinWaitActive("QQ2008 正式版 安装","选定使用环境")
ControlClick("QQ2008 正式版 安装","选定使用环境","")
ControlClick("QQ2008 正式版 安装","选定使用环境","")
Send("!N")
WinWaitActive("QQ2008 正式版 安装","选定安装位置和组件")
Send("!I")
Send("D:\Program Files\Tencent\QQ")
ControlClick("QQ2008 正式版 安装","选定安装位置和组件","")
ControlClick("QQ2008 正式版 安装","选定安装位置和组件","")
ControlClick("QQ2008 正式版 安装","选定安装位置和组件","")
;下面这句是为了去掉中文搜搜的选择,但是controlclick选不到,mouseclick能找到坐标,却不能点击成功,请高人指点.
Opt("MouseCoordMode", 0)
MouseClick("left",32,256)
Sleep(5000)
Send("!N")
WinWaitActive("QQ2008 正式版 安装","完成 QQ2008 正式版 安装向导")
ControlClick("QQ2008 正式版 安装","完成 QQ2008 正式版 安装向导","")
ControlClick("QQ2008 正式版 安装","完成 QQ2008 正式版 安装向导","")
ControlClick("QQ2008 正式版 安装","完成 QQ2008 正式版 安装向导","")
ControlClick("QQ2008 正式版 安装","完成 QQ2008 正式版 安装向导","")

bob 发表于 2008-8-19 18:43:49

建议你在论坛多搜索下
http://www.autoitx.com/forum.php?mod=viewthread&tid=1445

lxz 发表于 2008-8-19 18:47:30

你这代码在我机器上运行却正常.

hooshen 发表于 2008-8-20 13:04:03

这段代码可以运行,只是中间的这句中文搜搜去不掉,
这句的控件类别是:“Dialog88d”,ID号看不到,
所以我在代码中改用鼠标捕捉到坐标处点击,
在我用的几台东海9.0的系统上,鼠标可自动移动到复选框上,但就是不自动点击,
最后,我只好加了一名Sleep(5000),手动来点击它。
我是搞电脑售后,每天都要做着重复的工作,有时要同时装好多台电脑,
自从开始接触AU3后,我也尝试地写了一些脚本,
大多数软件都可以正常地自动安装,工作也轻松了许多,感谢AU3给我的工作带来了许多的便利。
也真诚地向各位高人学习。

xb0x 发表于 2008-8-20 14:26:57

我是采用先获取窗口位置WinGetPos,然后在窗口位置的基础上;加上搜搜控件位置,
如:
$xb0x=WinGetPos("QQ2008 正式版 安装")
MouseClick("left",$xb0x+32,$xb0x+256)
思路是这样,楼主自己试试

[ 本帖最后由 xb0x 于 2008-8-20 14:28 编辑 ]

pcbar 发表于 2008-8-20 17:27:14

去年就研究过了,结论为特殊控件,无法对其进行自动操作.
建议不要浪费时间了

chenbaker 发表于 2008-9-18 18:13:01

如果这一步能捕获鼠标左键,然后全自动下面的步骤,但不知怎样捕获。4楼的虽然用sleep(5000),但万一错过选择时间,中中文搜搜还是会安装的

sanhen 发表于 2008-9-18 18:48:04

模似鼠标点击。不是办法中的办法。。。QQ本来就可以搞在绿色版的。何必浪费时间呢。

鸿云若水 发表于 2008-11-7 14:28:13

我有办法,试过可以解决了!

不知道你还会不会看这个贴子,我也是因为做QQ的安装脚本时遇到了同样的问题才找到你这张贴子的。看来我和楼主是同一类人了,所以找到办法之后,特意注册个号上来回复你。

楼上各位大大们的方法都对,但也都不好用,因为他们没有真的去做QQ2008的安装AU3。不知道中搜的控件是取不到的。
你的想法是对的,只能用模拟鼠标来点。我的做法是这样的:(多次测试成功)
Opt("MouseCoordMode", 0)
MouseMove(32,259)
Sleep(1000) ;这句是关健,少了这句就点不上了。
MouseDown("left")
MouseUp("left")
分析:主要原因是鼠标移动的慢,脚本运行的快,没有等待的语句,没等鼠标移到就点了。
另外,在开头最好加上BlockInput (1)禁止用户动鼠标。在最后再BlockInput (0)取消禁止。
最后,贴上我的源码,希望对你有些帮助。我不常来这个论坛,我的QQ是:370947040

#region --- ScriptWriter generated code Start ---
if not FileExists ( "C:\WINDOWS\Temp\hyinstall.ini" ) Then FileCopy ( "hyinstall.ini", "C:\WINDOWS\Temp\hyinstall.ini",1 )
$var = IniRead("C:\WINDOWS\Temp\hyinstall.ini", "Config", "autoinstallpath", "未知")
if $var==0 or $var=="" Then
$input=FileSelectFolder ( "选择软件安装总目录,如D:\Program Files\", "",1,"D:\Program Files\" )
IniWrite ("C:\WINDOWS\Temp\hyinstall.ini", "Config", "autoinstallpath", $input)
EndIf
$var = IniRead("C:\WINDOWS\Temp\hyinstall.ini", "Config", "autoinstallpath", "未知")
‘以上的语句,是用来调用一个INI文件,记录用户的安装路径,实现多个软件全自动安装的。INI文件的内容只有两句
autoinstallpath=0
’这是hyinstall.ini的内容,要放在当前目录。
BlockInput (1)
Run("QQ2008IIBeta1.exe")
WinWait("QQ2008II Beta1 安装","欢迎使用 QQ2008II Be")
If Not WinActive("QQ2008II Beta1 安装","欢迎使用 QQ2008II Be") Then WinActivate("QQ2008II Beta1 安装","欢迎使用 QQ2008II Be")
WinWaitActive("QQ2008II Beta1 安装","欢迎使用 QQ2008II Be")
ControlClick("QQ2008II Beta1 安装","欢迎使用 QQ2008II Be","")
WinWait("QQ2008II Beta1 安装","选择使用环境,获得推")
If Not WinActive("QQ2008II Beta1 安装","选择使用环境,获得推") Then WinActivate("QQ2008II Beta1 安装","选择使用环境,获得推")
WinWaitActive("QQ2008II Beta1 安装","选择使用环境,获得推")
ControlClick("QQ2008II Beta1 安装","选择使用环境,获得推","")
ControlClick("QQ2008II Beta1 安装","选择使用环境,获得推","")
ControlClick("QQ2008II Beta1 安装","选择使用环境,获得推","")
WinWait("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ")
If Not WinActive("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ") Then WinActivate("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ")
WinWaitActive("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ")
Opt("MouseCoordMode",0)
ControlSend ("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ", "", $var&"\Tencent\QQ")
ControlClick("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ","")
ControlClick("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ","")
MouseMove(32,259)
Sleep(1000)
MouseDown("left")
MouseUp("left")
ControlClick("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ","")
ControlClick("QQ2008II Beta1 安装 ","选定 QQ2008II Beta1 ","")
WinWait("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ")
If Not WinActive("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ") Then WinActivate("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ")
WinWaitActive("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ")
ControlClick("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ","")
ControlClick("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ","")
ControlClick("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ","")
ControlClick("QQ2008II Beta1 安装 ","完成 QQ2008II Beta1 ","")
FileDelete ("C:\Documents and Settings\user\Application Data\Microsoft\Internet Explorer\Quick Launch\QQ游戏.lnk")
FileDelete ("C:\Documents and Settings\user\「开始」菜单\程序\启动\腾讯QQ.lnk")
FileDelete ("C:\Documents and Settings\user\桌面\QQ游戏.lnk")
BlockInput (0)
#endregion --- ScriptWriter generated code End ---

jtzxgfy 发表于 2008-11-7 21:27:24

学习了-谢谢
页: [1]
查看完整版本: QQ2008自动安装脚本的问题,请高人指点