Win32 API 日本語リファレンス
ホームUI.Accessibility › IWindowProvider

IWindowProvider

COM
IID987df77b-db06-4d77-8f8a-86a9c3bb90b9継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

コントロールの基本的なウィンドウベース機能へのアクセスを提供します。

解説(Remarks)

Window コントロールパターン をサポートする必要がある Microsoft UI Automation プロバイダーで実装されます。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetVisualState(WindowVisualState state)

ウィンドウの視覚的な状態を変更します。たとえば、最小化または最大化します。

stateWindowVisualStateinウィンドウの状態。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT Close()

ウィンドウを閉じようとします。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IWindowProvider::Close はブロックせずに直ちに戻る必要があります。

IWindowProvider::CloseUIA_Window_WindowClosedEventId イベントを発生させます。 可能であれば、コントロールが関連する動作を完了した後にイベントを発生させる必要があります。

分割ペインコントロールに対して呼び出された場合、このメソッドはペインを閉じ、 関連する分割を削除します。

このメソッドは、実装によっては他のすべてのペインも閉じる場合があります。

vtbl 5 HRESULT WaitForInputIdle(INT milliseconds, BOOL* pRetVal)

指定した時間、または関連付けられたプロセスがアイドル状態になるまでのいずれか早いほうまで、呼び出し元のコードをブロックします。(IWindowProvider.WaitForInputIdle)

millisecondsINTin関連付けられたプロセスがアイドルになるまで待機する時間(ミリ秒単位)。 最大値は Int32.MaxValue です。
pRetValBOOL*outウィンドウがアイドル状態になった場合は TRUE を、タイムアウトが発生した場合は FALSE を受け取ります。 このパラメーターは未初期化のまま渡されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは通常、UIA_Window_WindowOpenedEventId の処理と組み合わせて使用されます。 実装は基盤となるアプリケーションフレームワークに依存します。 そのため、このメソッドはウィンドウがユーザー入力を受け付けられる状態になってからしばらく後に戻る場合があります。 呼び出し元のコードは、ウィンドウがいつ正確にアイドルになったかを判断するためにこのメソッドに依存すべきではありません。 ウィンドウが入力を受け付けられる状態かどうか、あるいはメソッドがタイムアウトしたかどうかを判断するには、pRetVal の値を使用してください。

vtbl 6 HRESULT get_CanMaximize(BOOL* pRetVal)

ウィンドウを最大化できるかどうかを示します。(IWindowProvider.get_CanMaximize)

pRetValBOOL*outウィンドウを最大化できるかどうかを受け取る BOOL へのポインタである。
vtbl 7 HRESULT get_CanMinimize(BOOL* pRetVal)

ウィンドウを最小化できるかどうかを示します。(IWindowProvider.get_CanMinimize)

pRetValBOOL*outウィンドウを最小化できるかどうかを受け取る BOOL へのポインタである。
vtbl 8 HRESULT get_IsModal(BOOL* pRetVal)

ウィンドウがモーダルかどうかを示します。(IWindowProvider.get_IsModal)

pRetValBOOL*outウィンドウがモーダルであるかどうかを受け取る BOOL へのポインタである。
vtbl 9 HRESULT get_WindowVisualState(WindowVisualState* pRetVal)

ウィンドウの視覚的な状態、すなわちウィンドウが通常(復元)、最小化、または最大化のいずれであるかを指定します。

pRetValWindowVisualState*outウィンドウの現在の表示状態を示す WindowVisualState 値を受け取るポインタである。
vtbl 10 HRESULT get_WindowInteractionState(WindowInteractionState* pRetVal)

ユーザー操作の観点から見たウィンドウの現在の状態を指定します。

pRetValWindowInteractionState*outウィンドウが操作を受け付けられる状態かを示す WindowInteractionState 値を受け取るポインタである。
vtbl 11 HRESULT get_IsTopmost(BOOL* pRetVal)

ウィンドウが z オーダーで最前面の要素かどうかを示します。(IWindowProvider.get_IsTopmost)

pRetValBOOL*outウィンドウが最前面(常に手前)であるかどうかを受け取る BOOL へのポインタである。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWindowProvider "{987DF77B-DB06-4D77-8F8A-86A9C3BB90B9}"
#usecom global IWindowProvider IID_IWindowProvider "{}"
#comfunc global IWindowProvider_SetVisualState              3 int
#comfunc global IWindowProvider_Close                       4
#comfunc global IWindowProvider_WaitForInputIdle            5 int,var
#comfunc global IWindowProvider_get_CanMaximize             6 var
#comfunc global IWindowProvider_get_CanMinimize             7 var
#comfunc global IWindowProvider_get_IsModal                 8 var
#comfunc global IWindowProvider_get_WindowVisualState       9 var
#comfunc global IWindowProvider_get_WindowInteractionState  10 var
#comfunc global IWindowProvider_get_IsTopmost               11 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。