IOpenControlPanel
COM公式ドキュメント
コントロールパネルのビュー状態や個々のコントロールパネル項目のパスを取得したり、コントロールパネル自体または個々のコントロールパネル項目を開いたりするメソッドを公開します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したコントロールパネル項目を、必要に応じて特定のページを指定して開きます。
| pszName | LPWSTR | in | 項目の正規名を表す Unicode 文字列へのポインター。このパラメーターは省略可能で、NULL を指定できます。呼び出し元アプリケーションが NULL を渡した場合は、コントロールパネル自体が開きます。コントロールパネル項目の正規名の一覧については、「Canonical Names of Control Panel Items」を参照してください。 |
| pszPage | LPWSTR | in | 項目内で表示するページの名前へのポインター。この文字列は、シェルフォルダーのコントロールパネル項目の場合はパスの末尾に追加され、コントロールパネル (.cpl) ファイル項目の場合はコマンドライン パラメーターとして追加されます。このパラメーターには NULL を指定でき、その場合は最初のページが表示されます。 |
| punkSite | IUnknown* | in | シェルフォルダーのコントロールパネル項目をフレーム内でナビゲートするためのサイトへのポインター。このパラメーターには NULL を指定できます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したコントロールパネル項目のパスを取得します。
| pszName | LPWSTR | in | 項目の正規名または GUID へのポインター。この値には NULL を指定できます。詳細については「解説」を参照してください。コントロールパネル項目の正規名の一覧については、「Canonical Names of Control Panel Items」を参照してください。 |
| pszPath | LPWSTR | out | このメソッドが返るときに、指定したコントロールパネル項目のパスを Unicode 文字列として格納します。 |
| cchPath | DWORD | in | pszPath が指すバッファーのサイズ (WCHAR 単位)。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
pszName が項目の正規名または GUID を指している場合、返されるパスは、直近のコントロールパネルのビュー (クラシック表示またはカテゴリ表示) に応じて、次の 2 つの形式のいずれかになります。
::{CLSID_ControlPanel}\::{item guid}
::{CLSID_ControlPanelCategory}\categoryId\::{item guid}
pszName が NULL の場合は、次の 2 つの値のいずれかが返されます。
::{CLSID_ControlPanel}
::{CLSID_ControlPanelCategory}
直近のコントロールパネルのビュー (クラシック表示またはカテゴリ表示) を取得します。
| pView | CPVIEW* | out | 直近のビューを受け取るポインター。有効な値は次のとおりです。 CPVIEW_CLASSIC (0x0)0x0。クラシック表示。 CPVIEW_ALLITEMS (CPVIEW_CLASSIC)0x0。Windows 7 以降。CPVIEW_CLASSIC と同等です。 CPVIEW_CATEGORY (0x1)0x1。カテゴリ表示。 CPVIEW_HOME (0x1)0x1。Windows 7 以降。CPVIEW_CATEGORY と同等です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IOpenControlPanel "{D11AD862-66DE-4DF4-BF6C-1F5621996AF1}" #usecom global IOpenControlPanel IID_IOpenControlPanel "{06622D85-6856-4460-8DE1-A81921B41C4B}" #comfunc global IOpenControlPanel_Open 3 wstr,wstr,sptr #comfunc global IOpenControlPanel_GetPath 4 wstr,var,int #comfunc global IOpenControlPanel_GetCurrentView 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IOpenControlPanel "{D11AD862-66DE-4DF4-BF6C-1F5621996AF1}" #usecom global IOpenControlPanel IID_IOpenControlPanel "{06622D85-6856-4460-8DE1-A81921B41C4B}" #comfunc global IOpenControlPanel_Open 3 wstr,wstr,sptr #comfunc global IOpenControlPanel_GetPath 4 wstr,sptr,int #comfunc global IOpenControlPanel_GetCurrentView 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。