IWindowProvider
COM公式ドキュメント
コントロールの基本的なウィンドウベース機能へのアクセスを提供します。
解説(Remarks)
Window コントロールパターン をサポートする必要がある Microsoft UI Automation プロバイダーで実装されます。
メソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ウィンドウの視覚的な状態を変更します。たとえば、最小化または最大化します。
| state | WindowVisualState | in | ウィンドウの状態。 |
戻り値
ウィンドウを閉じようとします。
戻り値
解説(Remarks)
IWindowProvider::Close はブロックせずに直ちに戻る必要があります。
IWindowProvider::Close は UIA_Window_WindowClosedEventId イベントを発生させます。 可能であれば、コントロールが関連する動作を完了した後にイベントを発生させる必要があります。
分割ペインコントロールに対して呼び出された場合、このメソッドはペインを閉じ、 関連する分割を削除します。
このメソッドは、実装によっては他のすべてのペインも閉じる場合があります。
指定した時間、または関連付けられたプロセスがアイドル状態になるまでのいずれか早いほうまで、呼び出し元のコードをブロックします。(IWindowProvider.WaitForInputIdle)
| milliseconds | INT | in | 関連付けられたプロセスがアイドルになるまで待機する時間(ミリ秒単位)。 最大値は Int32.MaxValue です。 |
| pRetVal | BOOL* | out | ウィンドウがアイドル状態になった場合は TRUE を、タイムアウトが発生した場合は FALSE を受け取ります。 このパラメーターは未初期化のまま渡されます。 |
戻り値
解説(Remarks)
このメソッドは通常、UIA_Window_WindowOpenedEventId の処理と組み合わせて使用されます。 実装は基盤となるアプリケーションフレームワークに依存します。 そのため、このメソッドはウィンドウがユーザー入力を受け付けられる状態になってからしばらく後に戻る場合があります。 呼び出し元のコードは、ウィンドウがいつ正確にアイドルになったかを判断するためにこのメソッドに依存すべきではありません。 ウィンドウが入力を受け付けられる状態かどうか、あるいはメソッドがタイムアウトしたかどうかを判断するには、pRetVal の値を使用してください。
ウィンドウを最大化できるかどうかを示します。(IWindowProvider.get_CanMaximize)
| pRetVal | BOOL* | out | ウィンドウを最大化できるかどうかを受け取る BOOL へのポインタである。 |
ウィンドウを最小化できるかどうかを示します。(IWindowProvider.get_CanMinimize)
| pRetVal | BOOL* | out | ウィンドウを最小化できるかどうかを受け取る BOOL へのポインタである。 |
ウィンドウがモーダルかどうかを示します。(IWindowProvider.get_IsModal)
| pRetVal | BOOL* | out | ウィンドウがモーダルであるかどうかを受け取る BOOL へのポインタである。 |
ウィンドウの視覚的な状態、すなわちウィンドウが通常(復元)、最小化、または最大化のいずれであるかを指定します。
| pRetVal | WindowVisualState* | out | ウィンドウの現在の表示状態を示す WindowVisualState 値を受け取るポインタである。 |
ユーザー操作の観点から見たウィンドウの現在の状態を指定します。
| pRetVal | WindowInteractionState* | out | ウィンドウが操作を受け付けられる状態かを示す WindowInteractionState 値を受け取るポインタである。 |
ウィンドウが z オーダーで最前面の要素かどうかを示します。(IWindowProvider.get_IsTopmost)
| pRetVal | BOOL* | out | ウィンドウが最前面(常に手前)であるかどうかを受け取る BOOL へのポインタである。 |
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 方式にも切替可。#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,sptr #comfunc global IWindowProvider_get_CanMaximize 6 sptr #comfunc global IWindowProvider_get_CanMinimize 7 sptr #comfunc global IWindowProvider_get_IsModal 8 sptr #comfunc global IWindowProvider_get_WindowVisualState 9 sptr #comfunc global IWindowProvider_get_WindowInteractionState 10 sptr #comfunc global IWindowProvider_get_IsTopmost 11 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。