制御パターンの呼び出し
メソッドに関する情報など、 IInvokeProvider を実装するためのガイドラインと規則について説明します。 呼び出しコントロール パターンは、アクティブ化されたときに状態を維持せず、単一の明確なアクションを開始または実行するコントロールをサポートするために使用されます。
チェック ボックスやラジオ ボタンなど、状態を維持するコントロールは、代わりに IToggleProvider と ISelectionProvider をそれぞれ実装する必要があります。 このコントロール パターンを実装するコントロールの例については、「 コントロールの種類とサポートされているコントロール パターン」を参照してください。
このトピックは、次のセクションで構成されています。
実装のガイドラインと規則
Invoke コントロール パターンを実装する場合は、次のガイドラインと規則に注意してください。
同じ動作が別のコントロール パターン プロバイダーを介して公開されない場合、コントロールは IInvokeProvider を実装します。 たとえば、コントロールの IUIAutomationInvokePattern::Invoke メソッドが IUIAutomationExpandCollapsePattern::Expand または Collapse メソッドと同じアクションを実行する場合、コントロールは IInvokeProvider を実装しないでください。
通常、コントロールの呼び出しは、クリックまたはダブルクリックするか、Enter キー、定義済みのキーボード ショートカット、または何らかの代替的なキーの組み合わせを押すことによって実行されます。
Invoked イベント (UIA_Invoke_InvokedEventId) イベントは、アクティブ化されたコントロール (関連付けられたアクションを実行するコントロールへの応答として) で発生します。 可能な場合は、コントロールがアクションを完了し、ブロックせずに戻った後に、イベントを生成する必要があります。 次のシナリオで Invoke 要求を処理する前に、Invoke イベント (UIA_Invoke_InvokedEventId) を発生させる必要があります。
- 処理が完了するまで待機することが不可能または非現実的である。
- 処理にユーザー操作が必要になる。
- アクションに時間がかかり、呼び出し側のクライアントを長時間ブロックする。
コントロールの呼び出しに大きな副作用がある場合は、 HelpText プロパティを使用してそれらの副作用を公開する必要があります。 たとえば、 IUIAutomationInvokePattern::Invoke が選択に関連付けられていない場合でも、 Invoke によって別のコントロールが選択される可能性があります。
ホバー (またはマウス オーバー) 効果は、通常、 Invoked イベントを構成しません。 ただし、ホバー状態に基づいて (視覚効果を引き起こすのではなく) アクションを実行するコントロールは 、Invoke コントロール パターンをサポートする必要があります。
Note
マウス関連の副作用の結果として呼び出す以外にコントロールを呼び出す方法がない場合、そのような実装はユーザー補助に問題があるものと見なされます。
コントロールの呼び出しは、項目の選択とは異なります。 ただし、コントロールによっては、その呼び出しの副作用として、項目が選択された状態になることがあります。 たとえば、My Documents フォルダー内にある Microsoft Word 文書のリスト項目を呼び出すと、その項目が選択され、ドキュメントが開きます。
要素は、呼び出されるとすぐに Microsoft UI オートメーション ツリーから消える可能性があります。 そのため、イベント コールバックで提供された要素に情報を要求すると失敗することがあります。 推奨される回避策は、キャッシュされた情報をプリフェッチすることです。
コントロールは、複数のコントロール パターンを実装できます。 たとえば、Microsoft Excel ツール バーの Fill Color コントロールは、Invoke コントロールパターンと ExpandCollapse コントロール パターンの両方を実装します。 ExpandCollapse コントロール パターンはメニューを公開し、 Invoke コントロール パターンは選択した色でアクティブな選択範囲を塗りつぶします。
IInvokeProvider に必要なメンバー
IInvokeProvider インターフェイスを実装するために、次のメソッドが必要です。
必須メンバー | メンバーの型 | メモ |
---|---|---|
Invoke | メソッド |
Invoke は非同期呼び出しであり、ブロックせずにすぐにを返す必要があります。 呼び出されたときにモーダル ダイアログを直接的または間接的に表示するコントロールでは、この動作は特に重要です。 イベントを発生させたすべての UI オートメーション クライアントは、モーダル ダイアログが閉じられるまで、ブロックされたままになります。 |
このコントロール パターンに関連付けられるプロパティやイベントはありません。