プロパティ シート ハンドラー
ユーザーがシェル オブジェクトを右クリックすると、通常表示されるショートカット メニューには、プロパティ 項目が含まれます。 その項目を選択すると、ユーザーがオブジェクトのプロパティを表示したり、場合によっては変更したりできるプロパティ シートが起動します。 このプロパティ シートは、プロパティ シート ハンドラーを実装して登録することでカスタマイズできます。
シェル拡張ハンドラーを実装および登録するための一般的な手順については、「シェル拡張ハンドラーの作成 で説明します。 このドキュメントでは、プロパティ シート ハンドラーに固有の実装の側面について説明します。
- プロパティ シート ハンドラーの動作 の
- マウントされたドライブ のプロパティ シート ハンドラーの登録と実装
- 関連トピック
プロパティ シート ハンドラーのしくみ
次の図は、Windows XP テキスト ファイルのプロパティ シートを示しています。
プロパティ シートする
この図は、任意のファイルに表示される既定のプロパティ シートを示しています。 このようなプロパティ シートの多くでは、プロパティ シート ハンドラーを実装して登録することで、1 つ以上のページをプロパティ シートに追加できます。
プロパティ シート ハンドラーは、ファイルの種類のに最も一般的に登録されます。 各ハンドラーは、クラスの Properties プロパティ シートに 1 つのカスタム ページを追加できます。 通常、これらのページでは、特定のファイルの種類に固有のプロパティにアクセスできます。 たとえば、テキスト ドキュメントで構成されるファイルの種類には、タイトルと作成者を一覧表示するページと、ドキュメントの要約を表示できます。 この種類のプロパティ シート ハンドラーの特殊なケースは、マウントされたドライブのプロパティ プロパティ シートにページを追加するために使用されます。
プロパティ シート ハンドラーのもう 1 つの用途は、コントロール パネル アプリケーションによって表示されるプロパティ シート内のページを置き換える方法です。 たとえば、マウスの製造元は、プロパティ シート ハンドラーを使用して、コントロール パネルの マウス プロパティ プロパティ シートの ボタン ページを、そのマウスの特性に合わせてカスタマイズされたページに置き換えることができます。
すべてのシェル拡張ハンドラーと同様に、プロパティ シート ハンドラーは、DLL として実装されたインプロセス コンポーネント オブジェクト モデル (COM) オブジェクトです。 IUnknownに加えて、2 つのインターフェイスをエクスポートする必要があります。IShellExtInitと IShellPropSheetExtします。
IShellExtInit インターフェイスは、ハンドラーを初期化するためにシェルによって使用されます。 シェルが IShellExtInit::Initialize呼び出すと、オブジェクトの名前と、ファイルを含むフォルダーの項目識別子リスト (PIDL) へのポインターを持つデータ オブジェクトが渡されます。 hRegKey パラメーターは、プロパティ シート ハンドラーでは使用されません。 IShellExtInit::Initialize メソッドは、データ オブジェクトからファイル名を抽出し、後で使用するために名前とフォルダーの PIDL を格納する必要があります。 詳細については、「シェル拡張ハンドラーの作成」の「IShellExtInit の実装」セクションを参照してください。
操作の残りの部分は、ハンドラーの IShellPropSheetExt インターフェイスを介して行われます。 プロパティ シートがファイルの種類に関連付けられている場合、シェルは IShellPropSheetExt::AddPages を呼び出して、ハンドラーがプロパティ シートにページを追加できるようにします。 プロパティ シートがコントロール パネル アプリケーションに関連付けられている場合、シェルは IShellPropSheetExt::ReplacePage を呼び出して、ハンドラーがページを置き換えることを許可します。
マウントされたドライブのプロパティ シート ハンドラーの登録と実装
マウントされた各ドライブには、ユーザーが表示できるプロパティ シートがあります。 次の図は、CD-ROM ドライブのプロパティ シートを示しています。
cd-rom プロパティ シートする
ドライブとしてマウントできるさまざまなデバイスがあります。 ディスク ドライブ用に設計された既定のプロパティ シートでは、一部のデバイスでは不十分な場合があるため、プロパティ シート ハンドラーを実装して、マウントされたデバイスに固有のページを追加できます。 この種類のプロパティ シート ハンドラーの基本的な実装は、「ファイルの種類ののプロパティ シート ハンドラーを登録して実装する方法」で説明したのと同じですが、2 つの例外があります。
- ハンドラーの IShellExtInit::Initialize メソッドに渡されるデータ オブジェクトには、CF_HDROP 形式ではなく、CFSTR_MOUNTEDVOLUME 形式のドライブ パスが含まれている場合があります。 CF_HDROP形式は、デバイスがドライブ文字にマウントされるときに使用されます。 CFSTR_MOUNTEDVOLUME形式は、リモート デバイスがドライブ文字ではなくフォルダーにマウントされるときに NTFS ファイル システムで使用されます。
- ハンドラーの GUID は、HKEY_CLASSES_ROOT\Drive\shellex\PropertySheetHandlers キーの下に登録されます。
関連トピック