微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索

該用戶從未簽到

升級   4%

跳轉到指定樓層
主題
發表於 2020-3-17 20:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在學autoit,安裝adobe reader dc離線版,可以將檔案執行,然後無法執行安裝,請問哪裡出錯了?
ShellExecute("e:\AcroRdrDC1900820071_zh_TW.exe")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","準備安裝 Adobe Acrobat Reader DC")
Send("!i")
WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","安裝程式已完成")
Send("!f")



樓主熱門主題

簽到天數: 189

該用戶今日未簽到

升級   100%

2F
發表於 2020-3-18 15:04 | 只看該作者
我有測試你的代碼
是可以正確執行安裝的...

使用這方法可能要注意以下幾點
1.該安裝程式需要為活動(激活)狀態,以及位於最上層
2.安裝途中不可以去點擊其他地方,以免Send失靈...
    (Send命令限於活動的視窗)
3.可以在腳本頭尾分別加上 BlockInput(1)、BlockInput(0),
    用以鎖定滑鼠和鍵盤,降低失敗機率

  1. BlockInput(1)
  2. ShellExecute("e:\AcroRdrDC1900820071_zh_TW.exe")
  3. WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","準備安裝 Adobe Acrobat Reader DC")
  4. Send("!i")
  5. WinWaitActive("Adobe Acrobat Reader DC (Continuous) - 設定","安裝程式已完成")
  6. Send("!f")
  7. BlockInput(0)
複製代碼
  • 詳細解說,熱心助人

    foster 貢獻度 +5

使用道具

簽到天數: 189

該用戶今日未簽到

升級   100%

3F
發表於 2020-3-18 16:17 | 只看該作者
本帖最後由 gary8349 於 2020-3-18 17:36 編輯

以下為我的方法,僅供參考
推薦方法二

方法一:
  1. #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7


  2. #AutoIt3Wrapper_UseX64=n
  3. #NoTrayIcon
  4. #RequireAdmin


  5. ;;載入用以使用 防止重複執行(_Singleton) 語句
  6. #include <Misc.au3>

  7. FileChangeDir(@ScriptDir) ;;切換起始目錄工作目錄到腳本所在路徑
  8. _Singleton(@ScriptName) ;;防止重複執行


  9. ;;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


  10. ;;安裝程式的路徑
  11. Global $sFile = @ScriptDir & '\AcroRdrDC1900820071_zh_TW.exe'
  12. ;;第一個視窗的標題與類型
  13. Global $Windows1 = '[Title:Adobe Acrobat Reader DC - 安裝程式; Class:#32770]'
  14. ;;第二個視窗的標題與類型
  15. Global $Windows2 = '[Title:Adobe Acrobat Reader DC (Continuous) - 設定; Class:MsiDialogCloseClass]'

  16. BlockInput(1)

  17. ;;執行安裝程式
  18. ShellExecute($sFile)

  19. ;;等待第一個視窗(解壓縮-AcroRdrDC1900820071_zh_TW.exe)
  20. WinWait($Windows1, '正在解壓縮安裝檔案...')

  21. ;;等待第二個視窗(解壓縮完的執行程式-setup.exe)
  22. WinWaitActive($Windows2, '準備安裝 Adobe Acrobat Reader DC')


  23. Send("!i")


  24. WinWaitActive($Windows2, '安裝程式已完成')


  25. Send("!f")


  26. BlockInput(0)


  27. MsgBox(64, '完成', '安裝已完成!', 5)


  28. Exit

複製代碼
方法二:
  1. #cs ____________________________________

  2.         Au3版本:3.3.14.5
  3.         SciTE版本:3.6.6
  4.         腳本作者:SHIWASU KAKERU / MicroDuo

  5.         腳本功能:自動安裝 Adobe Reader DC 示例
  6.         外部函數:PostMessage_UDF.au3(後臺執行)

  7. #ce _______________腳本開始_________________


  8. ;;腳本檢查
  9. #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7
  10. ;;exe不編譯為x64
  11. #AutoIt3Wrapper_UseX64=n
  12. ;;不顯示右下角系統匣圖標
  13. #NoTrayIcon
  14. ;;請求管理員權限
  15. #RequireAdmin


  16. ;;防止重複執行(_Singleton) 函數
  17. #include <Misc.au3>
  18. ;;_MouseClick 函數
  19. #include <PostMessage_UDF.au3>


  20. ;;切換起始目錄工作目錄到腳本所在路徑
  21. FileChangeDir(@ScriptDir)
  22. ;;防止重複執行
  23. _Singleton(@ScriptName)


  24. ;;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


  25. ;;安裝程式的路徑
  26. Global $sFile = @ScriptDir & '\AcroRdrDC1900820071_zh_TW.exe'
  27. ;;第一個視窗的標題與類型
  28. Global $Windows1 = '[Title:Adobe Acrobat Reader DC - 安裝程式; Class:#32770]'
  29. ;;第二個視窗的標題與類型
  30. Global $Windows2 = '[Title:Adobe Acrobat Reader DC (Continuous) - 設定; Class:MsiDialogCloseClass]'
  31. ;;安裝按鈕
  32. Global $btnInstallHandle = "[CLASS:Button; INSTANCE:4]"
  33. ;;完成按鈕
  34. Global $btnFinalHandle = "[CLASS:Button; INSTANCE:1]"
  35. ;;宣告變數
  36. Global $btnInstall, $btnFinal


  37. ;;執行安裝程式
  38. ShellExecute($sFile)

  39. ;;等待第一個視窗(解壓縮-AcroRdrDC1900820071_zh_TW.exe)
  40. WinWait($Windows1, '正在解壓縮安裝檔案...')

  41. ;;等待第二個視窗(解壓縮完的執行程式-setup.exe)
  42. WinWait($Windows2, '準備安裝 Adobe Acrobat Reader DC')

  43. ;;按下 "安裝" 按鈕
  44. $btnInstall = ControlGetHandle($Windows2,"",$btnInstallHandle) ;;取得 "安裝" 按鈕控件控制碼
  45. _MouseClick(String($btnInstall), 'left', 50, 10) ;;滑鼠左鍵點擊 "安裝" 按鈕。 300, 324 => "安裝" 按鈕的相對(於安裝程式)座標

  46. ;;等待安裝完成
  47. WinWait($Windows2, '安裝程式已完成')

  48. ;;按下 "完成" 按鈕
  49. $btnFinal = ControlGetHandle($Windows2,"",$btnFinalHandle) ;;取得 "完成" 按鈕控件控制碼
  50. _MouseClick(String($btnFinal), 'left', 50, 10) ;;滑鼠左鍵點擊 "完成" 按鈕。 50, 10 => "完成" 按鈕的相對(於安裝程式)座標

  51. ;;等待視窗關閉
  52. WinWaitClose($Windows2, '安裝程式已完成')

  53. ;;完成提示
  54. MsgBox(64, '完成', '安裝已完成!', 5)

  55. ;;結束
  56. Exit

複製代碼

本帖子中包含更多資源

您需要 登入 才可以下載或查看,沒有帳號?註冊

x

使用道具

簽到天數: 189

該用戶今日未簽到

升級   100%

4F
發表於 2020-3-18 17:48 | 只看該作者
稍微題外話
如果要研究,不想每次都執行完等他解壓縮
可以用以下方法:

1.執行 AcroRdrDC1900820071_zh_TW.exe,等待解壓縮完成,不要進行下個動作
2.開啟Temp資料夾,可以用 ShellExecute(@TempDir)
3.找到數字資料夾,如:27948,大小約164MB
4.資料夾裡面有 config.bin、installer.bin,用7-Zip解壓縮installer.bin至 \installer 資料夾,得到以下檔案

5.直接對setup.exe進行操作即可

本帖子中包含更多資源

您需要 登入 才可以下載或查看,沒有帳號?註冊

x

使用道具

該用戶從未簽到

升級   4%

5F
 樓主| 發表於 2020-3-20 23:04 | 只看該作者
感謝以上大大回復,我會測試看看

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-11-21 17:42

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表