2017年7月5日 星期三

AutoIt 執行外部程式進階應用

在前一篇AutoIt 執行外部程式 中介紹了AutoIt執行外部程式的方式,這篇再補充進階的應用,可以強化整個程式執行的方便性,在這一篇AutoIt 執行外部程式 中我們呼叫了外部程式pspasswd.exe,這個程式必須同時放在程式可以存取的地方,但是如果我們在企業中要佈署這個程式時有時侯這支工具程式不一定會放在每一台電腦中,可行的做法如下:
  • 將AutoIt編譯過的程式與pspasswd.exe 放在一起以壓縮軟體打包在一起後進行佈署
  • 將pspasswd.exe 程式事先佈署於每一台電腦以便AutoIt進行呼叫使用
其實AutoIt提供了一個Function 可以將檔案包含在編譯Au3檔案後的執行檔中,透過這個方式可以將所需要的檔案包在單一執行檔中點選執行時就可以將檔案解壓出來,這對執行外部程式有很大的幫助,也可以確保執行的程式放置的位置。
以下是執行將檔案Include 到AutoIt程式碼的Function,使用上也非常簡單,將要Include 的檔案設定為Source,執行程式後解壓的檔案為dest,這裡比較重要的是dest 的位置必須指定已存在的路徑,否則會失敗。

FileInstall ( "source", "dest" [, flag = 0] )

下面這段程式就是在此次範例的程式碼,檔案的原始路徑及程式執行後解壓的路徑,只要設定好即可將檔案Include 進來。

FileInstall("c:\temp\pspasswd.exe", @ScriptDir & "\pspasswd.exe")

編譯過程中有幾點必須注意的,當把其它程式或檔案Include 後會造成單一執行檔案的空間變大,因此在編譯時可以設定壓縮率,就和一般的壓縮軟體一樣,壓縮率高執行過程會比較慢,相對可以節省比較大的空間,反之在犧牲空間下可以加快執行的速度,另外可以勾選以UPX 壓縮方式可大幅縮小檔案容量與磁碟空間,加速網路下載。

image

範例:



#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=3
#AutoIt3Wrapper_UseUpx=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.14.2
Author: 奔騰兔開發誌
Date : 2017/07/05
Script Function: Script Demo
Description :呼叫外部程式的進階運用
Notes:http://pentiumto.blogspot.tw/


#ce ----------------------------------------------------------------------------


Opt("TrayIconDebug", 1) ;0=no info, 1=debug line info
Opt("TrayIconHide", 0) ;0=show, 1=hide tray icon

Dim $sNowtime=@YEAR &"-"& @MON &"-"& @MDAY &" "& @HOUR &":"& @MIN

ConsoleWrite($sNowtime & " [Info] " & @ScriptLineNumber & " 自訂訊息可以在開發過程除錯 "&@CRLF)



FileInstall("c:\temp\pspasswd.exe", @ScriptDir & "\pspasswd.exe")


Dim $sNewPassword = "NewPassword"


_ExecReset()


Func _ExecReset()


RegWrite("HKEY_CURRENT_USER\Software\Sysinternals\PsPasswd" , "EulaAccepted", "REG_DWORD", "1")

Sleep(1000)

RunWait(@ComSpec & " /c " & "pspasswd.exe \\" & @ComputerName & " administrator " & $sNewPassword,@ScriptDir,@SW_HIDE)


EndFunc


沒有留言:

張貼留言