IDsObjectPicker
COM公式ドキュメント
IDsObjectPicker インターフェイスは、アプリケーションがオブジェクト ピッカー ダイアログ ボックスを初期化して表示するために使用します。このインターフェイスのインスタンスを作成するには、以下に示すように CLSID_DsObjectPicker クラス識別子を指定して CoCreateInstance を呼び出します。
解説(Remarks)
IDsObjectPicker インターフェイスのインスタンスを 1 つ作成して初期化した後は、インターフェイスを再初期化することなく InvokeDialog を複数回呼び出しても問題ありません。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
IDsObjectPicker::Initialize メソッドは、オブジェクト ピッカー ダイアログ ボックスで使用されるスコープ、フィルター、およびオプションに関するデータを使用して、オブジェクト ピッカー ダイアログ ボックスを初期化します。
| pInitInfo | DSOP_INIT_INFO* | inout | 初期化データを格納する DSOP_INIT_INFO 構造体へのポインター。 |
戻り値
標準のエラー コード、または次の値のいずれかを返します。
解説(Remarks)
IDsObjectPicker::Initialize は複数回呼び出すことができ、最後の呼び出しが優先されます。IDsObjectPicker オブジェクトは、このメソッドに応答して自身を完全に再初期化します。
モーダルのオブジェクト ピッカー ダイアログ ボックスを表示し、ユーザーの選択内容を返します。
| hwndParent | HWND | in | ダイアログ ボックスの所有者ウィンドウへのハンドル。このパラメーターに NULL または GetDesktopWindow 関数の戻り値を指定することはできません。 |
| ppdoSelections | IDataObject** | out | ユーザーの選択内容に関するデータを格納するデータ オブジェクトを受け取る、IDataObject インターフェイス ポインターへのポインター。このデータは CFSTR_DSOP_DS_SELECTION_LIST データ形式で提供されます。ユーザーがダイアログ ボックスをキャンセルした場合、このパラメーターは NULL を受け取ります。 |
戻り値
標準のエラー コード、または次の値のいずれかを返します。
解説(Remarks)
IDsObjectPicker::InvokeDialog を呼び出す前に、IDsObjectPicker::Initialize を呼び出して IDsObjectPicker オブジェクトを初期化しておく必要があります。IDsObjectPicker オブジェクトを初期化した後は、インターフェイスを再初期化することなく InvokeDialog を複数回呼び出すことができます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDsObjectPicker "{0C87E64E-3B7A-11D2-B9E0-00C04FD8DBF7}" #usecom global IDsObjectPicker IID_IDsObjectPicker "{}" #comfunc global IDsObjectPicker_Initialize 3 var #comfunc global IDsObjectPicker_InvokeDialog 4 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDsObjectPicker "{0C87E64E-3B7A-11D2-B9E0-00C04FD8DBF7}" #usecom global IDsObjectPicker IID_IDsObjectPicker "{}" #comfunc global IDsObjectPicker_Initialize 3 sptr #comfunc global IDsObjectPicker_InvokeDialog 4 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。