找回密码
 加入
搜索
查看: 4666|回复: 14

微点的自动安装脚本【一大难题】

[复制链接]
发表于 2009-3-9 00:33:06 | 显示全部楼层 |阅读模式
本帖最后由 lynfr8 于 2009-7-10 13:57 编辑

希望有高手能写出整个微点的脚本
run("微点mp.exe")
$hd="微点主动防御软件 安装程序"
WinWaitActive($hd,"语言选择")
ControlClick($hd,"语言选择","[CLASS:Button; TEXT:下一步]","left")
WinWaitActive($hd,"欢迎使用")
ControlClick($hd,"欢迎使用","[CLASS:Button; TEXT:下一步]","left")
WinWaitActive($hd,"许可证协议")
ControlClick($hd, "许可证协议", "[CLASS:Button; TEXT:同意]","left")
controlClick($hd, "许可证协议", "[CLASS:Button; TEXT:下一步]","left")
WinWaitActive($hd,"输入您的信息。");从这个界面开始脚本无法反应
ControlSetText($hd, "输入您的信息。", "Edit1", "007")
ControlSetText($hd, "输入您的信息。", "Edit2", "007")
ControlSetText($hd, "输入您的信息。", "Edit3", "8A2E9Z")
ControlSetText($hd, "输入您的信息。", "Edit4", "UK8EP9")
ControlSetText($hd, "输入您的信息。", "Edit5", "WV8EJD")
ControlSetText($hd, "输入您的信息。", "Edit6", "U8LC63");以上注册信息无法自动修改录入
如果把窗口检测信息工具把鼠标放到图片上就可以看到标题:微点主动防御软件    安装程序
放到注册信息就不能检测到标题了

就卡在这里了,后面的脚本也无法完成
....
再补充今天战果
终于第三步可以跨越过去了(就是输入注册信息那一部分)
居然问题出现Edit的枚举那里,我把窗口信息工具获取的Edit1改成3,2改成4,以此类推
居然可以顺利ControlSetText并send("{enter}")就可以下一步了
选择微点程序的安装文件夹---这一步也很轻松send("{enter}")就过了
问题又来了
WinActive($hd,"现有文件夹:")----这一步有无法控制button2到下一步了
真是见鬼了
然后胡乱尝试一下居然重复语句
ControlSetText($hd,"现有文件夹:", "Edit2", "管理工具")
ControlClick($hd,"现有文件夹:","[CLASS:Button; TEXT:下一步]","left")
ControlSetText($hd,"现有文件夹:", "Edit2", "管理工具")
ControlClick($hd,"现有文件夹:","[CLASS:Button; TEXT:下一步]","left")
能到下一步了
天啊!!!!!!!
是我太蠢还是微点太鬼魅了????
问题又出现了
看图:
>>>> 窗口 <<<<
标题: 
类: #32770
坐标: 627, 288
大小: 348, 317
样式: 0xD0000044
扩展样式: 0x00000000
句柄: 0x000B040C

>>>> 控件 <<<<
类: SysListView32
枚举: 1
类别名: SysListView321
ID: 281
文本: List1
坐标: 10, 50
大小: 313, 202
控件坐标: 45, 66
样式: 0x50010001
扩展样式: 0x00000204
句柄: 0x00060462

>>>> 可见文本 <<<<
请进行初始设置,或按“下一步”应用默认设置。
初始设置
下一步
取消
List1
附上最新代码
run("微点mp.exe")
$hd="微点主动防御软件 安装程序"
WinWaitActive($hd,"语言选择")
ControlClick($hd,"语言选择","[CLASS:Button; TEXT:下一步]","left")
WinWaitActive($hd,"欢迎使用")
ControlClick($hd,"欢迎使用","[CLASS:Button; TEXT:下一步]","left")
WinWaitActive($hd,"许可证协议")
ControlClick($hd, "许可证协议", "[CLASS:Button; TEXT:同意]","left")
controlClick($hd, "许可证协议", "[CLASS:Button; TEXT:下一步]","left")
WinActive($hd,"请输入您的用户名和所在公司的名称及产品序列号")
controlClick($hd, "许可证协议", "[CLASS:Button; TEXT:上一步]","left")
WinActive($hd,"请输入您的用户名和所在公司的名称及产品序列号")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit3", "aaa")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit4", "aaa")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit5", "000000")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit6", "111111")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit7", "000000")
ControlSetText($hd, "请输入您的用户名和所在公司的名称及产品序列号", "Edit8", "U8LC63")
send("{enter}")
WinActive($hd,"选择微点程序的安装文件夹")
send("{enter}")
WinActive($hd,"安装程序将在以下文件夹安装微点主动防御软件,要安装到此文件夹,请单击“下一步”。要安装到其它文件夹,请单击【浏览】然后选择其它文件夹。")
send("{enter}")
WinActive($hd,"现有文件夹:")
ControlSetText($hd,"现有文件夹:", "Edit2", "管理工具")
ControlClick($hd,"现有文件夹:","[CLASS:Button; TEXT:下一步]","left")
ControlSetText($hd,"现有文件夹:", "Edit2", "管理工具")
ControlClick($hd,"现有文件夹:","[CLASS:Button; TEXT:下一步]","left")
另外,不知道是不是微点在安装时候有hook自我保护,
我脚本安装前部分(即注册信息成功之后选择安装文件夹之前)
然后手动安装后面的设置,居然得到提示:




天啊,我真的无语了
几天的苦拼,还是如此收场....

更可恶的是




彻底的没办法了,乖乖手动重新安装了
~~~唉....

本帖子中包含更多资源

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

×
发表于 2009-3-9 01:47:55 | 显示全部楼层

回复 1# lynfr8 的帖子



[ 本帖最后由 131738 于 2009-3-10 00:26 编辑 ]
发表于 2009-3-9 11:25:57 | 显示全部楼层
我是新手,请楼上告诉我哪个地方错了
 楼主| 发表于 2009-3-9 11:46:45 | 显示全部楼层
原帖由 131738 于 2009-3-9 01:47 发表
第4句这样写:

ControlClick($hd,"语言选择","Button2")

你那写法严重错误!

看看这贴!!

http://www.autoitx.com/forum.php ... &extra=page%3D2

问一句:你那序列号能通过注册吗?


ControlClick($hd,"语言选择","Button2")
你那写法严重错误!-----------这句话我不同意,请看:
http://www.autoitx.com/forum.php ... tid=1330&page=1


至于注册码,呵呵,我的是预升级,所以部分注册码修改掩饰过了,如果你需要,帮我搞定这个脚本,我愿意赠予你真正的预升级注册码(也是我唯一的一个),为了这个脚本我愿意用回普通的试用90天注册码。

恳请各路英雄解疑
这个脚本的变化控件ID有很代表性的意义
能攻克这也是对自动安装的莫大贡献啊

[ 本帖最后由 lynfr8 于 2009-3-9 12:02 编辑 ]
 楼主| 发表于 2009-3-9 15:47:28 | 显示全部楼层
虽然很丧气,基本放弃自动安装了,但还是希望有牛人能解决这个“难题”(对于菜鸟的我而言)
发表于 2009-3-9 20:52:47 | 显示全部楼层
我临时不用微点。。。无经验可谈~~~~
发表于 2009-3-11 15:08:42 | 显示全部楼层
都没获取输入框的控件...怎么输入啊?
发表于 2009-3-16 13:51:56 | 显示全部楼层
测试版本:1.2.10580.1
测试环境:Win XP 精简版
脚本版本:3.3.0.0


#RequireAdmin
#AutoIt3Wrapper_Run_Debug_Mode = y

Global $T1 = '[regexptitle:微点主动防御软件.*安装程序]', $T2 = '[regexptitle:微点主动防御软件.*提示信息]', _
                $T3 = '[regexptitle:微点主动防御软件.*提示信息]', $text[6] = ['安装向导将在计算机中安装微点主动防御软件', _
                '请仔细阅读下面的许可证协议', '输入您的信息。', '选择微点程序的安装文件夹', '程序文件夹:', '复制文件前请查看设置。']

Run('mp.exe')
WinWait($T1)
Sleep(500) ;延时大或小,用与不用,自定
For $i = 0 To 5
        ControlClick($T1, '', '[text:下一步]')
        If $i = 0 Then
                WinWait($T1, $text[$i], 2)
                If WinExists($T3) Then
                        Sleep(1e3)
                        ControlClick($T3, '', '[text:否]')
                        Exit
                EndIf
        Else
                WinWait($T1, $text[$i])
                Sleep(500) ;延时大或小,用与不用,自定
        EndIf
        If $i = 1 Then
                ControlCommand($T1, '', '[ID:119;text:确定]', 'check', '') ;这里的‘ID’是需要在多机器上确定是否不变
        EndIf
        If $i = 3 And WinExists($T2) Then ControlClick($T2, '', '[text:确定]')
Next
ControlClick($T1, '', '[text:下一步]')

评分

参与人数 1金钱 +10 贡献 +15 收起 理由
lynfr8 + 10 + 15 精品文章

查看全部评分

 楼主| 发表于 2009-3-16 14:53:56 | 显示全部楼层

回复 8# liongodmien 的帖子

太感谢你了!
一直在观察有否高手出招相助
马上去试试
再次感激!!
感激!!!
发表于 2009-3-16 16:13:06 | 显示全部楼层
此为完全安装脚本代码,前提条件同上


#RequireAdmin
#AutoIt3Wrapper_Run_Debug_Mode = y

Global $T1 = '[regexptitle:微点主动防御软件.*安装程序.*]', $T2 = '[regexptitle:微点主动防御软件.*信息.*]', _
                $T3 = '[regexptitle:微点主动防御软件.*产品注册.*]', $text[6] = ['安装向导将在计算机中安装微点主动防御软件', _
                '请仔细阅读下面的许可证协议', '输入您的信息。', '选择微点程序的安装文件夹', '程序文件夹:', '复制文件前请查看设置。']
;~ #cs
Run('mp.exe')
WinWait($T1)
WinActivate($T1)
SendKeepActive($T1)
Sleep(500) ;延时大或小,用与不用,自定
For $i = 0 To 5
        Send('{enter}')
        If $i = 0 Then
                Do
                        Sleep(90)
                        If WinExists($T1, $text[$i]) Then ExitLoop
                        If WinExists($T2) Then
                                ControlClick($T2, '', '[text:是]')
;~                                 Exit
                        EndIf
                Until 0
        Else
                WinWait($T1, $text[$i])
                Sleep(500) ;延时大或小,用与不用,自定
        EndIf
        If $i = 1 Then
                ControlCommand($T1, '', '[ID:119;text:确定]', 'check', '') ;这里的‘ID’是需要在多机器上确定是否不变
        EndIf
        If $i = 2 Then
                ControlSetText($T1, "", "[class:Edit;classnn:Edit3]", "007")
                ControlSetText($T1, "", "[class:Edit;classnn:Edit4]", "007")
                ControlSetText($T1, "", "[class:Edit;classnn:Edit5]", "AJ3856")
                ControlSetText($T1, "", "[class:Edit;classnn:Edit6]", "I2SRH7")
                ControlSetText($T1, "", "[class:Edit;classnn:Edit7]", "CILN42")
                ControlSetText($T1, "", "[class:Edit;classnn:Edit8]", "3M5GYG")
        EndIf
        If WinExists($T2) Then ControlClick($T2, '', '[text:确定]')
Next
;~ Send('{enter}')
ControlClick($T1, '', '[TEXT:下一步]')
WinWait($T1, '初始设置')
Sleep(500) ;延时大或小,用与不用,自定
Send('{enter}')
WinWait($T3)
ControlClick($T3, '', '[text:跳过]')
WinWait($T2)
ControlClick($T2, '', '[text:确定]')
Sleep(500) ;延时大或小,用与不用,自定
ControlClick($T1, '', '[TEXT:完成]')
WinWait($T2, '', '本程序需要重新启动计算机,是否现在重启?')
Sleep(500) ;延时大或小,用与不用,自定
ControlClick($T2, '', '[text:否]')

评分

参与人数 1贡献 +9 收起 理由
lynfr8 + 9 精品文章

查看全部评分

发表于 2009-3-16 19:48:17 | 显示全部楼层
>"E:\autoit3\SciTe\ACNWrapper\ACNWrapper.exe" /run /ErrorStdOut /in "G:\深度软安器\E办公应用\微点\000.au3" /autoit3dir "E:\autoit3" /UserParams   
+>19:41:22 开始执行 ACNWrapper v.1.10.1.12
+>执行环境:
+>        系统语言:        0804
+>        键盘布局:        00000804
+>        操作系统:        WIN_XP/Service Pack 3
+>        CPU:                X86
+>        IP地址:                169.254.93.122
>运行 AU3Check (1.54.14.0)  开始目录:E:\autoit3
+>19:41:22 AU3Check 结束[CODE]:0
>运行:(3.3.0.0):E:\autoit3\autoit3.exe "G:\深度软安器\E办公应用\微点\000.au3"   
!> 开始于调试模式..
行: @error-@extended: 行表达式
0001: 0-0: #RequireAdmin
0002: 0-0: #AutoIt3Wrapper_Run_Debug_Mode = y
0004: 0-0: Global $T1 = "[regexptitle:微点主动防御软件.*安装程序.*]", $T2 = "[regexptitle:微点主动防御软件.*信息.*]", $T3 = "[regexptitle:微点主动防御软件.*产品注册.*]", $text[6] = ["安装向导将在计算机中安装微点主动防御软件", "请仔细阅读下面的许可证协议", "输入您的信息。", "选择微点程序的安装文件夹", "程序文件夹:", "复制文件前请查看设置。"]
0008: 0-0: Run("mp.exe")
0009: 0-0: WinWait($T1)
0010: 0-0: WinActivate($T1)
0011: 0-1: SendKeepActive($T1)
0012: 0-0: Sleep(500) ;延时大或小,用与不用,自定
在多机器上确定是否不变0013: 0-0: For $i = 0 To 5
0014: 0-0:         Send("{enter}")
0015: 0-0:         If $i = 0 Then
0016: 0-0:                 Do
0017: 0-0:                         Sleep(90)
0018: 0-0:                         If WinExists($T1, $text[$i]) Then ExitLoop
0024: 0-0:         Else
0028: 0-0:         If $i = 1 Then
0031: 0-0:         If $i = 2 Then
0039: 0-0:         If WinExists($T2) Then ControlClick($T2, "", "[text:确定]")
F)0040: 0-0: Next
0014: 0-0:         Send("{enter}")
0015: 0-0:         If $i = 0 Then
0025: 0-0:                 WinWait($T1, $text[$i])
0026: 0-0:                 Sleep(500) ;延时大或小,用与不用,自定
?????剃?)?0027: 0-0:         EndIf
0028: 0-0:         If $i = 1 Then
0029: 0-0:                 ControlCommand($T1, "", "[ID:119;text:确定]", "check", "") ;这里的‘ID’是需要在多机器上确定是否不变
导将在计算机中安装微点主动防御软件', 0030: 0-0:         EndIf
0031: 0-0:         If $i = 2 Then
0039: 0-0:         If WinExists($T2) Then ControlClick($T2, "", "[text:确定]")
CR0040: 0-0: Next
0014: 0-0:         Send("{enter}")
0015: 0-0:         If $i = 0 Then
0025: 0-0:                 WinWait($T1, $text[$i])
+>19:44:55 AutoIT3.exe 完成:[CODE]:0
+>19:44:56 ACNWrapper 完成!
>退出代码: 0    时间: 214.724

====================================
发表于 2009-3-21 14:15:41 | 显示全部楼层
应该不难,获取不到标题大不了用绝对地址鼠标点击
发表于 2009-4-11 19:48:10 | 显示全部楼层
神人啊,不懂
发表于 2010-2-26 16:13:35 | 显示全部楼层
哇塞!!厉害厉害!!超级崇拜 呵呵 弄得我都有点不好意思了  呵呵
发表于 2012-11-7 10:33:56 | 显示全部楼层
真心没看懂,。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 12:44 , Processed in 0.267115 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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