2017-11-16 32 views
-1

ソフトウェアをテストするための自動テストスクリプトをいくつか作成しています。これをモジュール化して、どのスクリプトが存在するかをより簡単に指示し、すべてのスクリプトをあらかじめコンパイルしておきます。アプリケーションにスクリプトをフォーカスさせるにはどうすればよいですか?

バッチからパラメータを指定して起動するスクリプトがあります私のコンパイルされたスクリプトは、ログインの詳細を入力し、表示されるダイアログにOKを押します。この部分は意図したとおりに動作します。メインアプリケーションウィンドウの上に私は再ゲイン焦点にしようとしていますスクリプトの終わりに

、次のテストを実行するために全画面表示し、次のバッチファイルを実行するウィンドウを設定するなど

この例では、 "$ practice"は、メインアプリケーションのウィンドウタイトルを指します。これは、AutoItv3 Infoツールを使用して派生したものです。

WinWaitActive($practice) 
$hWnd = WinGetHandle($practice) 

; FullScreen 
WinSetState($practice,"",@SW_RESTORE) 
WinSetState($practice,"",@SW_MAXIMIZE) 

RunWait(@ComSpec & " /c " & "TestStart.bat") 

しかし、これがフォーカスを回復し、期待通りのウィンドウを最大化されていない、私は、アプリケーションが画面を妨害することができスプラッシュと思います。

私が手動でフォーカスを当てるアプリケーションの任意の部分をクリックすると、ダイアログがフルスクリーンに設定され、2番目のスクリプトが実行されます。

スクリプトのこの最後の部分を私が望むように動作させるにはどうすればよいですか?

+1

WinSetStateを呼び出す前に、コントロールにフォーカスを与えることによって、問題に

WinActivate($practice) WinWaitActive($practice) $hWnd = WinGetHandle($practice) ControlFocus($hWnd, "", "[CLASS:XTPToolBar; INSTANCE:1]") ; FullScreen WinSetState($practice,"",@SW_RESTORE) WinSetState($practice,"",@SW_MAXIMIZE) RunWait(@ComSpec & " /c " & "sequence.bat") 

を解決することになった方法ですあなたが質問にautoitv3情報ツールの詳細を追加することはできますか? – Kesh

答えて

1

WinActivate( "タイトル" [、 "テキスト"]) - アクティブ(にフォーカスを与える)ウィンドウ。

タイトル - アクティブにするウィンドウのタイトル/ hWnd /クラス。 Title special definitionを参照してください。

テキスト [オプション]アクティブにするウィンドウのテキスト。既定値は 空の文字列です。 See Text special definition

詳細情報here

0

これは私がWinActivateを追加し、手動で

関連する問題