シェル拡張機能の使用

シェルの機能は、レジストリ エントリと.ini ファイルを使用して拡張できます。 シェルを拡張するこのアプローチは単純であり、多くの目的に適していますが、制限されています。 たとえば、レジストリを使用してファイルの種類にカスタム アイコンを指定すると、その種類のすべてのファイルに同じアイコンが表示されます。 レジストリを使用してシェルを拡張しても、ファイルの種類のメンバーごとにアイコンを変更することはできません。 ファイルを右クリックしたときに表示できる Properties プロパティ シートなど、シェルのその他の側面は、レジストリでまったく変更できません。

シェルを拡張するためのより強力で柔軟なアプローチは、 シェル拡張ハンドラーを実装することです。 これらのハンドラーは、シェルが実行できるさまざまなアクションに対して実装できます。 アクションを実行する前に、シェルは拡張機能ハンドラーに対してクエリを実行し、アクションを変更する機会を与えます。 一般的な例は、ショートカット メニュー拡張機能ハンドラーです。 ファイルの種類に対して実装されている場合は、いずれかのファイルが右クリックされるたびにクエリが実行されます。 その後、ハンドラーは、そのファイルの種類のすべてのファイルに同じセットを設定するのではなく、ファイルごとに追加のメニュー項目を指定できます。

この一連のトピックでは、さまざまなシェル アクションを変更できる拡張ハンドラーを実装する方法について説明します。 次のハンドラーは、特定のファイルの種類に関連付けられているので、ファイルごとにを指定できます。

Handler 説明
ショートカット メニュー ハンドラー ファイルのショートカット メニューが表示される前に呼び出されます。 これにより、ファイルごとにショートカット メニューに項目を追加できます。
データ ハンドラー シェル オブジェクトに対してドラッグ アンド ドロップ操作が実行されたときに呼び出されます。 これにより、ドロップ ターゲットに追加のクリップボード形式を提供できます。
ドロップ ハンドラー データ オブジェクトがファイル上でドラッグまたはドロップされたときに呼び出されます。 これにより、ファイルをドロップ ターゲットにすることができます。
アイコン ハンドラー ファイルのアイコンが表示される前に呼び出されます。 これにより、ファイルの既定のアイコンをファイルごとにカスタム アイコンに置き換えることができます。
プロパティ シート ハンドラー オブジェクトの Properties プロパティ シートが表示される前に呼び出されます。 これにより、ページを追加または置換できます。
サムネイル画像ハンドラー 項目を表すイメージを提供します。
ヒント ハンドラー ユーザーがオブジェクトの上にマウス ポインターを置いたときにポップアップ テキストを提供します。
メタデータ ハンドラー ファイルに格納されているメタデータ (プロパティ) への読み取りおよび書き込みアクセスを提供します。 これは、詳細ビュー、ヒント、プロパティ ページ、およびグループ化機能を拡張するために使用できます。

 

その他のファイルは、特定のファイルの種類に関連付けられていないが、一部のシェル操作の前に呼び出されます。

Handler 説明
列ハンドラー フォルダーの詳細ビューを表示する前に、Windows エクスプローラーによって呼び出されます。 これにより、カスタム列を [詳細] ビューに追加できます。
フック ハンドラーのコピー フォルダーまたはプリンター オブジェクトが移動、コピー、削除、または名前変更されようとしているときに呼び出されます。 これにより、操作を承認または拒否できます。
ドラッグ アンド ドロップ ハンドラー マウスの右ボタンでファイルをドラッグしたときに呼び出されます。 これにより、表示されるショートカット メニューを変更できます。
アイコン オーバーレイ ハンドラー ファイルのアイコンが表示される前に呼び出されます。 これにより、ファイルのアイコンのオーバーレイを指定できます。
検索ハンドラー 検索エンジンを起動するために呼び出されます。 これにより、[スタート] メニューまたは Windows エクスプローラーからアクセスできるカスタム検索エンジンを実装できます。

 

特定の拡張機能ハンドラーを実装する方法の詳細については、上記のセクションで説明します。 すべてのシェル拡張機能ハンドラーに共通する実装の問題については、次のトピックを参照してください。