差多 发表于 2014-3-19 11:45:00

请达人帮忙优化一个自动安装的代码。

本帖最后由 差多 于 2014-3-19 11:47 编辑

我给我的搜狗拼音输入法(XP系统)批量安装数千个.scel格式的词库,学着用autoit写了一个代码段,如下所示,主要想解决的问题是是每安装完一个词库,桌面上都会跳出一个消息框,提示安装成功,需要键盘发出回车动作,另外,如遇到以前已经安装过相同的词库,则会跳出另外一种消息框,问是否覆盖以前的安装,这时需要键盘发出“alt+y”。我考虑用同时等待的策略,这样title和body可以取两个消息框的交集。经测试发现,只能自动完成回车确认下面左图中的消息框,右图中的则失灵,需要手动介入操作,用鼠标点击那个“是”或者键盘alt+y,不知道我错在哪里。

; 配置区
Const $pattern = "*.scel"          ; TODO: change to "*.scel"
Const $title = "搜狗拼音"          ; TODO: change to "搜狗拼音"
Const $body = ""                  ; TODO: change to ""


#include <MsgBoxConstants.au3>

Local $h = FileFindFirstFile($pattern)
If $h = -1 Then
    MsgBox($MB_SYSTEMMODAL + $MB_ICONERROR, "运行失败", "未发现匹配的可执行文件,请检查脚本")
    Exit 1
EndIf

While 1
    Local $f = FileFindNextFile($h)
    If @error Then ExitLoop
    ShellExecute($f)
    WinWaitActive($title, $body)
    Sendkeepactive("")
    Send("{Enter}")
    Send("!y")
WEnd
FileClose($h)

chenronting 发表于 2014-3-20 13:38:25

覆盖那个是可能出来, 只要做一个判断就行了,只是出来的时机不一样而已。
在可能出来的时机就做一个判断就行了。
页: [1]
查看完整版本: 请达人帮忙优化一个自动安装的代码。