2017-03-23 34 views
1

所以我在autoIT中有腳本,它工作正常,但編譯後的exe具有不同的行爲,如腳本。編譯後的不可預知的行爲

Run("C:\WINDOWS\system32\cmd.exe") 
WinWaitActive("C:\WINDOWS\system32\cmd.exe") 
send("ImporatntExecutable /regserver" & "{ENTER}") 
send("regsvr32 Important.dll" & "{Enter}") 

因此,腳本完美地執行這個命令,但exe編譯腳本編號。在EXE情況下,命令行看起來像:

rImportant.dll 

reImportant.dll 

這些命令是不存在的,所以我得到的錯誤,但字符串命令REGSVR32 Important.dllrImportant.dllreImportant.dll。有任何想法嗎?

+0

你爲什麼把密鑰發送到cmd窗口?爲什麼不從腳本執行這些命令?你可能是第一個曾經嘗試過的人。 –

+0

因爲這個序列必須是自動的,並且批處理文件(需要可執行文件)是不可接受的。另外如果你的名字不騙我,問候我的捷克兄弟;) – viceriel

回答

1

重寫你的腳本是這樣的:

Run("ImporatntExecutable /regserver") 
Run("regsvr32 Important.dll") 

,你可以編譯爲exe。無需將按鍵發送到cmd窗口。

如果您仍然需要將擊鍵發送到cmd窗口進行任何(對我來說難以理解的)原因,你可以嘗試add this line一開始你的腳本:

Opt ("SendKeyDelay", 500) 

也許編譯腳本是太快cmd窗口。

+1

沒有擊鍵命令沒有執行。所以我在命令行輸入命令,在他旁邊是另一個命令。但關鍵延遲是命令窗口中的字符串正確,這是我的主要問題,謝謝:) – viceriel