2011-07-07 208 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とWAITSを作成して閉じます。それが閉じられると、次の行が読み込まれ、実行されます。

以下を試してください:au3ファイルを2つ作成し、最初の行を1.au3に、2番目の行を2.au3に入れてください。その順序で実行し、何が起こるかを確認します。ダイアログはフォーカスがないので、Sendは苦労しますが、ControlClickのバージョンは機能するはずです。

+0

返事をありがとう。私は、Autoitウィンドウ情報ツールからControlClick( "FileUpload"、 "Button2")、ControlClick( "File Upload"、 "Quadrillion work"、 "[CLASS:Button; TEXT:&Open; INSTANCE:2]")ウィンドウ私はこの情報を得ましたが、それでも動作しませんでした。 – coder

+0

@Vikas、FileOpenDialogとオートメーションコードの両方を同じスクリプトで実行していませんか? – Matt

+0

私はau3ファイルを書いています。そして、これらの2つの行を書いた。次に、このau3ファイルをexeファイルに変換します。さて、この最初の行はダイアログボックスを開き、2番目の行は開いているボタンをクリックし、ダイアログボックスは消えるべきです。先ほどsendオプション( "{tab}")を置いていたときにsendオプションを試してみたところ、その場合は正常に動作しました。 – coder

4

FileOpenDialogを適切に使用しているとは思われません。ダイアログの目的は、ユーザーと対話することです。インタラクションを必要としない場合は、最初にダイアログを開く必要はありません。すべてのダイアログボックスは、デフォルトとして指定している選択したファイルの名前を返します。最初から変数にファイルパスを割り当てることはできませんか? http://www.autoitscript.com/autoit3/docs/functions/FileOpenDialog.htm

成功から

は:選択したファイル(複数可)の完全なパスを返します。 の結果が複数選択されている "ディレクトリ|ファイル1 |ファイル2 | ..."

0

AutoItはマルチスレッドではないので、これはうまくいかないでしょう。 ダイアログを開くと、ユーザーが[OK]をクリックするまでスクリプトの実行が一時停止されるので、次の行の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}") 

!それが役に立てば幸い。

関連する問題