2.6.1 ウィンドウ処理について

MAINセクションでは,表示されたダイアログボックスに対して,クライアントユーザが誤って応答したり,キーボードやマウスを操作したりしたために,インストールが中断するような事態に備えて,メイン処理の部分を作成する必要があります。

AITファイルでのウィンドウ処理を次の図に示します。

図2-14 AITファイルでのウィンドウ処理

[図データ]

AITファイルは,ループ中で繰り返しウィンドウを検索します。したがって,クライアントユーザが誤ってAウィンドウに応答してBウィンドウが表示された状態でも,AITファイルはAウィンドウの処理をスキップしてBウィンドウの処理を実行できます。

AITファイルを作成する場合は,出力されるウィンドウを調査し,そのウィンドウに対する処理を並べます。このような処理構造によって,出力されるウィンドウの順序やユーザの操作に関係なく処理を完結できます。

AITファイルでのウィンドウ処理は,次の処理を一つのパーツとしてループ中にシーケンシャルに並べます。

これらのウィンドウ処理では,表2-2および表2-3に示すAPIを使用します。

表2-2 ウィンドウの検索で使用するAPI

API名称説明
AIT_FocusWindowウィンドウを検索し,フォーカスを設定します。
AIT_CtrlSetFocus特定のコントロールにフォーカスを設定します。

表2-3 ウィンドウの操作で使用するAPI

API名称説明
AIT_VerifyExistenceウィンドウ中に,ボタンやチェックボックスなどのコントロールがあるかないかを確認します。
AIT_VerifyEnabledコントロールが使用可能かどうかを確認します。
AIT_VerifyPosコントロールの位置を確認します。
AIT_PlayKey[Enter]キーを押すなどの,キーボード操作をシミュレートします。
ウィンドウ処理の注意事項
Windows 8,Windows Server 2012,Windows 7,Windows Server 2008,Windows Vista,Windows Server 2003,Windows XP,またはWindows 2000環境で,AITファイルを使用してソフトウェアをリモートインストールする場合,ウィンドウ操作のAPI(AIT_FocusWindowおよびAIT_CtrlSetFocus)ではアプリケーションにフォーカスが設定できないことがあります。その際は,レコーダ操作のAPIであるAIT_ExecまたはAIT_ExecCommandの実行後に,AIT_PlayKeyで[Alt]+[Tab]キーをシミュレートし,フォーカスをデスクトップから移動してください。

次に,これらのAPIの役割と使用方法について説明します。各APIのパラメタおよび戻り値の詳細については,「4. APIリファレンス」を参照してください。

<この項の構成>
(1) AIT_FocusWindow
(2) AIT_CtrlSetFocus
(3) AIT_VerifyExistence
(4) AIT_VerifyEnabled
(5) AIT_VerifyPos
(6) AIT_PlayKey
(7) 自動生成されたウィンドウ処理の例

(1) AIT_FocusWindow

AIT_FocusWindowはウィンドウを検索し,そのウィンドウにフォーカスを設定します。AIT_FocusWindowでウィンドウを検索してフォーカスを設定したあと,ウィンドウに対する処理を行います。

ウィンドウを検索するためには,パラメタとして,ウィンドウテキストとクラス名を指定します。ウィンドウテキストとクラス名を調査するには,ウィンドウプロパティツールを使用すると便利です。また,レコーダで自動生成したAITファイルのコードを利用する方法もあります。

戻り値は,ウィンドウの検索に成功した場合はウィンドウハンドル,検索に失敗した場合は0になります。

次に,AIT_FocusWindowの使用例を示します。

図2-15 AIT_FocusWindowの使用例

[図データ]

(2) AIT_CtrlSetFocus

AIT_CtrlSetFocusは,特定のコントロールにフォーカスを設定します。ウィンドウの中に複数のコントロールがある場合は,AIT_CtrlSetFocusでコントロールにフォーカスを設定し,そのあとユーザ操作をシミュレートします。

コントロールを指定するためには,コントロールのキャプションまたはコントロールIDを指定します。また,コントロールの種類(ボタン,リストボックスなど)も指定します。

次に,コントロールのキャプションを指定したAIT_CtrlSetFocusの使用例を示します。

図2-16 AIT_CtrlSetFocusの使用例

[図データ]

(3) AIT_VerifyExistence

AIT_VerifyExistenceは,コントロールの存在を確認します。

例えば,同じキャプションを持つウィンドウが複数存在する場合,AIT_FocusWindowでウィンドウにフォーカスを設定しても,そのウィンドウが操作対象でないおそれがあります。このような場合にAIT_VerifyExistenceを使用して,ウィンドウの中に特定のコントロールが存在することを確認し,そのウィンドウが操作対象であることを判定します。

コントロールを指定するためには,コントロールのキャプションまたはコントロールIDを指定します。また,コントロールの種類(ボタン,リストボックスなど)も指定します。戻り値は,コントロールが存在する場合は1,存在しない場合は0になります。

次に,コントロールのキャプションを指定したAIT_VerifyExistenceの使用例を示します。

図2-17 AIT_VerifyExistenceの使用例

[図データ]

(4) AIT_VerifyEnabled

AIT_VerifyEnabledは,コントロールが使用可能かどうかを確認します。

例えば,チェックボックスとボタンが関連づけられていて,チェックボックスをチェックするとボタンが活性化し(使用可能),チェックを外すとボタンが非活性(使用不可)になる場合があります。このような場合は,AIT_VerifyEnabledでボタンが使用可能かどうかを確認し,使用可能であれば「ボタンを押す」というユーザ操作をシミュレートします。

また,AIT_VerifyEnabledは,AIT_VerifyExistenceやAIT_VerifyPosと組み合わせて使用します。AIT_VerifyExistenceやAIT_VerifyPosでコントロールの存在を確認したあと,そのコントロールが使用可能かどうかを確認します。

コントロールを指定するためには,コントロールのキャプションまたはコントロールIDを指定します。また,コントロールの種類(ボタン,リストボックスなど)も指定します。戻り値は,コントロールが使用可能な場合は1,使用できない場合は0になります。

次に,コントロールのキャプションを指定したAIT_VerifyEnabledの使用例を示します。

図2-18 AIT_VerifyEnabledの使用例

[図データ]

(5) AIT_VerifyPos

AIT_VerifyPosは,コントロールのタブオーダーを確認します。AIT_VerifyPosはAIT_VerifyExistenceと同様の目的に使用しますが,ウィンドウ中に同じキャプションを持つコントロールが複数存在する場合に,タブオーダーも指定することによって,対象のコントロールの存在を確認します。

コントロールを指定するためには,コントロールのキャプションまたはコントロールIDを指定します。また,コントロールの種類(ボタン,リストボックスなど)とタブオーダーも指定します。戻り値は,コントロールのタブオーダーが指定したパラメタと一致した場合は1,一致しない場合は0になります。

次に,コントロールのキャプションを指定したAIT_VerifyPosの使用例を示します。

図2-19 AIT_VerifyPosの使用例

[図データ]

(6) AIT_PlayKey

AIT_PlayKeyは,キーボード操作をシミュレートします。

パラメタとして,キーボードから入力する文字列を指定します。例えば,パラメタとして「abcd」を指定すると,「abcd」という文字列が入力されます。また,[Esc]キーの入力を意味する{ESC}や[Alt]+[F]キーの入力を意味する%(F)など,特殊な意味を持つ文字を入力することもできます。

次に,AIT_PlayKeyの使用例を示します。

図2-20 AIT_PlayKeyの使用例

[図データ]

(7) 自動生成されたウィンドウ処理の例

レコーディングして自動生成されたAITファイルには,ウィンドウの情報やウィンドウに対する処理が記録されています。自動生成されたウィンドウ処理の例を次の図に示します。

図2-21 自動生成されたウィンドウ処理の例

[図データ]