【已解决】安装FreeFileSync遇到的问题
本帖最后由 fybhwsx 于 2024-1-25 11:53 编辑#include <WinAPISysWin.au3>
;软件下载地址:https://freefilesync.org/
Local $FreeFileSync_lnk = 'C:\Users\Public\Desktop\FreeFileSync.lnk' ;公共桌面快捷方式
FileGetShortcut($FreeFileSync_lnk)
If @error Then
ShellExecute('Z:\FreeFileSync_13.3_Setup.exe') ;运行安装程序
Local $azckjb, $aData, $i, $zckwb
;点击《我同意此协议》
$azckjb = WinWaitActive('', '许可协议')
$aData = _WinAPI_EnumChildWindows($azckjb) ;枚举指定父窗的子窗口(可见)
For $i = 1 To $aData
$zckwb = ControlGetText($azckjb, '', $aData[$i])
If StringInStr($zckwb, '我同意此协议') Then
If ControlClick($azckjb, '', $aData[$i]) Then ExitLoop
EndIf
Next
;点击《下一步》
For $i = 1 To $aData
$zckwb = ControlGetText($azckjb, '', $aData[$i])
If StringInStr($zckwb, '下一步') Then
If ControlClick($azckjb, '', $aData[$i]) Then ExitLoop
EndIf
Next
WinWaitActive('', '选择目标位置')
;点击《下一步》
For $i = 1 To $aData
$zckwb = ControlGetText($azckjb, '', $aData[$i])
If StringInStr($zckwb, '下一步') Then
If ControlClick($azckjb, '', $aData[$i]) Then ExitLoop
EndIf
Next
WinWaitActive('', '选择组件')
;点击《下一步》
For $i = 1 To $aData
$zckwb = ControlGetText($azckjb, '', $aData[$i])
If StringInStr($zckwb, '下一步') Then
If ControlClick($azckjb, '', $aData[$i]) Then ExitLoop
EndIf
Next
WinWaitActive('', '不是广告')
;点击《下一步》
For $i = 1 To $aData
$zckwb = ControlGetText($azckjb, '', $aData[$i])
If StringInStr($zckwb, '下一步') Then
If ControlClick($azckjb, '', $aData[$i]) Then ExitLoop
EndIf
Next
;点击《完成》
WinWaitActive('', '安装完成')
Local $ds
For $i = 15 To 1 Step -1
Local $zckwb = ControlGetText('', '安装完成', 'TNewButton' & $i)
;此处用StringInStr或StringRegExp比较不出控件文本?!(首次安装还能比较出来,卸载再安装就无效?)后来观察这个《完成》的按钮就是倒数第二个控件,只能无确认的瞎点了。。
If $zckwb Then $ds += 1
If $ds = 2 Then
ControlFocus('', '安装完成', 'TNewButton' & $i)
ControlClick('', '安装完成', 'TNewButton' & $i)
ExitLoop
EndIf
Next
EndIf这个软件的控件接口不固定,诡异的是最后一步点击《完成》按钮时,比较不出控件文本。谁有空闲时间帮忙测试一下上面的安装代码,看能不能在你们的电脑上安装。有没有更简单有效(卸载几次试试脚本都能安装回来)的方法能分享一下!
为啥不找静默安装参数呢?一般是 /S 或者/install 之类的,多试试 风过无痕 发表于 2024-1-25 09:56
为啥不找静默安装参数呢?一般是 /S 或者/install 之类的,多试试
感谢,特意搜了一下,没有发现这个软件静默安装的相关信息。 对最末的那段问题感兴趣,测试确实有问题,因为文本获取时有时无,ID号也是会变~
原本以为提取文件做便携版就行,安装时才发现有条件… 那就不用试了 … _ _||
这样试试,我测试了N次都是ok~
$azckjb = WinWaitActive('', '安装完成')
$aData = _WinAPI_EnumChildWindows($azckjb) ;枚举指定父窗的子窗口(可见)
Local $aPos
For $i = 1 To $aData
If $aData[$i] = 'TNewButton' Then
$aPos = ControlGetPos($azckjb, '', $aData[$i])
If Not @error And($aPos > 0 And $aPos < 300) Then
ControlClick($azckjb, '', $aData[$i])
Exitloop
EndIf
EndIf
Next afan 发表于 2024-1-25 11:28
对最末的那段问题感兴趣,测试确实有问题,因为文本获取时有时无,ID号也是会变~
原本以为提取文件做便携版 ...
a版,我测试控件文本能获取到,但用StringInStr或StringRegExp无法比较确认,这是我无法理解的问题。我这水平有限研究不了这问题了,能用就行,感谢a版! 本帖最后由 afan 于 2024-1-25 12:36 编辑
fybhwsx 发表于 2024-1-25 12:16
a版,我测试控件文本能获取到,但用StringInStr或StringRegExp无法比较确认,这是我无法理解的问题。我这 ...
能获取到 >>> 我之前用 Au3.WProbe 测试过了,拖动靶标捕获,控件其它信息都能获取到,但文本却是时有时无(或无法显示),这也是我感兴趣的地方。
(首次安装还能比较出来,卸载再安装就无效?)这也是时有时无的原因,能获取到就不会有 StringInStr 或 StringRegExp 无法匹配到的问题了
刚试了下,如果只是自用,不考虑别的,最后一步直接按回车键就行。
页:
[1]