0

AutoIt スクリプトを使用してアプリケーションを自動化しています。以下は私が実行しているコマンドです:

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

Send("{ENTER}")

最初のコマンドは、WESTF12433.jpg ファイルが選択された状態でファイルを開くダイアログを開くときに機能します。ここで、開くボタンをクリックします。どうすればいいですか?

Send("{ENTER}")動かない。

4

3 に答える 3

6

送信は、ウィンドウにフォーカスを当てる必要があるため、適切な方法ではありません。これは保証できません。あなたが投稿したことから、最良の方法はこれだと思います:

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

コメントに応じて編集:

あなたの問題: fileOpenDialog が実行をブロックしています。AutoIt が行を読み取り、実行し、次の行を読み取るように考える必要があります。

この場合: AutoIt は 1 行目を読み取ります。FileOpenDialog を作成し、それを閉じるのを待ちます。閉じられると、次の行を読み取り、それを実行します。

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

于 2011-07-07T20:55:44.647 に答える
5

あなたはFileOpenDialog()適切に使用していません。その目的は、ユーザーと対話することです。それが必要ないなら、そもそも必要ない。

すでに定義した、選択したファイルの名前を返すだけです。最初からファイルパスを変数に代入することはできませんか? ドキュメント - 関数リファレンス -FileOpenDialog()に従って:

成功: 選択したファイルのフル パスを返します。複数選択の結果は「ディレクトリ|ファイル1|ファイル2|...」

于 2012-03-21T15:27:12.980 に答える
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}")

そのような単純な!それが役に立てば幸い。

于 2014-01-19T21:31:34.973 に答える