ICommDlgBrowser2
COM公式ドキュメント
ICommDlgBrowser の機能を拡張します。このインターフェイスは、コモンファイルダイアログボックスが Shell ブラウザーをホストする際に公開されます。ICommDlgBrowser2 へのポインターは、IShellBrowser オブジェクトに対して QueryInterface を呼び出すことで取得できます。
解説(Remarks)
このインターフェイスは、継承元である ICommDlgBrowser インターフェイスのメソッドも提供します。
Shell ビューがコモンダイアログボックス内でホストされている場合は、ICommDlgBrowser2 を使用してください。
ICommDlgBrowser2 は、すべての ICommDlgBrowser メソッドと、IUnknown を実装します。ここに示すメソッドは ICommDlgBrowser2 に固有のものです。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
イベントが発生したことを、Shell ビューがそれをホストするコモンダイアログボックスに通知するために呼び出されます。
| ppshv | IShellView* | in | ホストされているビューの IShellView インターフェイスへのポインターです。 |
| dwNotifyType | DWORD | in | 次の 2 つの値のいずれかを取るフラグです。 CDB2N_CONTEXTMENU_STARTショートカットメニューが表示されようとしていることを示します。 CDB2N_CONTEXTMENU_DONEショートカットメニューが表示されなくなったことを示します。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
既定のショートカットメニューのテキストを取得するために、Shell ビューによって呼び出されます。
| ppshv | IShellView* | in | ホストされているビューの IShellView インターフェイスへのポインターです。 |
| pszText | LPWSTR | out | 既定のショートカットメニューのテキストを返すために Shell ブラウザーが使用するバッファーへのポインターです。 |
| cchMax | INT | in | pszText バッファーのサイズ (文字数) です。少なくとも許容される最大パス長 (MAX_PATH) 以上のサイズにする必要があります。 |
戻り値
型: HRESULT
新しい既定のショートカットメニューのテキストが pshv に返された場合は S_OK を返します。S_FALSE が返された場合は、通常の既定のテキストを使用してください。それ以外の場合は、標準的な COM エラー値を返します。
コモンダイアログブラウザー用に特別なカスタマイズを行う必要があるかどうかをビューが判断する必要がある場合に呼び出されます。
| pdwFlags | DWORD* | out | コモンダイアログモードのときのビューの動作を制御する DWORD 値へのポインターです。 CDB2GVF_SHOWALLFILES (0x00000001)0x00000001。隠しファイルやシステムファイルを含むすべてのファイルを表示する必要があります。Windows XP では、これが認識される唯一のフラグです。 CDB2GVF_ISFILESAVE (0x00000002)0x00000002。このブラウザーは、保存するファイルを選択するために指定されています。 CDB2GVF_ALLOWPREVIEWPANE (0x00000004)0x00000004。使用されていません。 CDB2GVF_NOSELECTVERB (0x00000008)0x00000008。項目のコンテキストメニューに " CDB2GVF_NOINCLUDEITEM (0x00000010)0x00000010。IncludeObject を呼び出さないようにします。 CDB2GVF_ISFOLDERPICKER (0x00000020)0x00000020。このブラウザーは、フォルダーを選択するために指定されています。 CDB2GVF_ADDSHIELD (0x00000040)0x00000040。Windows 7 以降。 CDB2GVF_NOSELECTVERB が指定されていない場合、選択された項目に UAC シールドを表示します。 |
戻り値
型: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICommDlgBrowser2 "{10339516-2894-11D2-9039-00C04F8EEB3E}" #usecom global ICommDlgBrowser2 IID_ICommDlgBrowser2 "{}" #comfunc global ICommDlgBrowser2_Notify 6 sptr,int #comfunc global ICommDlgBrowser2_GetDefaultMenuText 7 sptr,var,int #comfunc global ICommDlgBrowser2_GetViewFlags 8 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICommDlgBrowser2 "{10339516-2894-11D2-9039-00C04F8EEB3E}" #usecom global ICommDlgBrowser2 IID_ICommDlgBrowser2 "{}" #comfunc global ICommDlgBrowser2_Notify 6 sptr,int #comfunc global ICommDlgBrowser2_GetDefaultMenuText 7 sptr,sptr,int #comfunc global ICommDlgBrowser2_GetViewFlags 8 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。