次の方法で共有


プロパティ シート ハンドラー

ユーザーがシェル オブジェクトを右クリックすると、通常表示されるショートカット メニューには、プロパティ 項目が含まれます。 その項目を選択すると、ユーザーがオブジェクトのプロパティを表示したり、場合によっては変更したりできるプロパティ シートが起動します。 このプロパティ シートは、プロパティ シート ハンドラーを実装して登録することでカスタマイズできます。

シェル拡張ハンドラーを実装および登録するための一般的な手順については、「シェル拡張ハンドラーの作成 で説明します。 このドキュメントでは、プロパティ シート ハンドラーに固有の実装の側面について説明します。

プロパティ シート ハンドラーのしくみ

次の図は、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 キーの下に登録されます。

ファイルの種類のプロパティ シート ハンドラーを登録して実装する方法

コントロール パネル アプリケーションのプロパティ シート ハンドラーを登録して実装する方法