2011-07-07 108 views
0

我正在使用AutoIt腳本來自動執行我的應用程序。以下是我正在運行的命令:使用AutoIt打開文件

FileOpenDialog ("File Upload", "C:\Documents and Settings\abhishek.kumar\Desktop\Quadrillion work", "Images (*.jpg;*.bmp)", "","WESTF12433.jpg","") 

Send("{ENTER}") 

第一個命令起作用,因爲它打開文件打開對話框,並選擇了WESTF12433.jpg文件。現在我想點擊打開的按鈕。我該怎麼做?

Send("{ENTER}")不起作用。

+2

等等...你想創建一個對話框,然後在下一行自動化? – Matt

回答

6

發送不是一個好方法,因爲它需要窗口被聚焦,這是你不能保證的。從您發佈的東西,我會說,最好的方法是這樣的:

ControlClick("File Upload", "", "Button1") 

編輯迴應評論:

您的問題:fileOpenDialog阻止執行。您需要像AutoIt讀取一條線一樣考慮它,運行它,然後讀取下一條。

在這種情況下:AutoIt讀取第1行。它創建一個FileOpenDialog並等待您關閉它。一旦它關閉,它將讀取下一行,並運行它。

請嘗試以下操作:創建兩個au3文件,並將第一行放入1.au3,將第二行放入2.au3。按順序運行它們,看看會發生什麼。發送會很困難,因爲對話框沒有焦點,但ControlClick版本應該可以工作。

+0

感謝您的回覆。我使用了ControlClick(「FileUpload」,「」,「Button2」)和ControlClick(「File Upload」,「Quadrillion work」,「[CLASS:Button; TEXT:&Open; INSTANCE:2]」)窗口我得到了這些信息,但仍然無效。 – coder

+0

@Vikas,你沒有在同一個腳本中同時運行FileOpenDialog和自動化代碼? – Matt

+0

我寫了一個au3文件。並寫下這兩行。然後將此au3文件轉換爲exe文件。現在不應該打開一個對話框,第二行應該點擊打開的按鈕,對話框應該熄滅。早些時候當我嘗試使用發送選項時,雖然我已經發送(「{tab}」),在這種情況下,它正常工作。 – coder

4

我不認爲你正在使用FileOpenDialog。對話框的目的是與用戶進行交互。如果您不需要/不需要交互,則無需首先打開對話框。該對話框所做的是返回所選文件的名稱,這些文件將作爲默認文件提供。難道你不能從一開始就把文件路徑分配給變量嗎?

http://www.autoitscript.com/autoit3/docs/functions/FileOpenDialog.htm

成功:返回選擇的文件(S)的完整路徑。 多重選擇的結果爲「Directory | file1 | file2 | ...」

0

這將永遠不會工作,因爲AutoIt不是多線程的。 一旦你打開對話框,它會暫停腳本執行,直到用戶單擊確定,因此下一行的Send()函數在之後纔會執行任何操作。

你可以做的是製作另一個腳本,編譯它並在打開對話框之前運行它。

Run("clickOpen.exe") 
FileOpenDialog ("File Upload", "C:\Documents and Settings\abhishek.kumar\Desktop\Quadrillion work", "Images (*.jpg;*.bmp)", "","WESTF12433.jpg","") 

這是會得到執行:

WinWaitActive("File Upload") 
Send("{ENTER}") 

就這麼簡單!希望能幫助到你。