ドロップ ハンドラーを作成する方法

既定では、ファイルはドロップ ターゲットではありません。 ドロップ ハンドラーを実装して登録することで、 ファイルの種類 のメンバーを ドロップ ターゲットにすることができます。

ドロップ ハンドラーがファイルの種類に登録されている場合は、オブジェクトがファイルの種類のメンバーにドラッグ またはドロップされるたびに呼び出されます。 シェルは、ハンドラーの IDropTarget インターフェイスで適切なメソッドを呼び出すことによって、操作を管理します。

シェル拡張ハンドラーを実装および登録するための一般的な手順については、「 シェル拡張ハンドラーの作成」を参照してください。 このドキュメントでは、ドロップ ハンドラーに固有の実装の側面に焦点を当てています。

Instructions

手順 1: ドロップ ハンドラーの実装

すべてのシェル拡張ハンドラーと同様に、ドロップ ハンドラーは DLL として実装されたインプロセス コンポーネント オブジェクト モデル (COM) オブジェクトです。 IUnknown に加えて、IPersistFileIDropTarget という 2 つのインターフェイスをエクスポートします。

シェルは、 IPersistFile インターフェイスを使用してハンドラーを初期化します。 このインターフェイスを使用してハンドラーのクラス識別子 (CLSID) を要求し、ファイルの名前を指定します。 IPersistFile インターフェイスを含むシェル拡張ハンドラーを実装する方法の一般的な説明については、「シェル拡張ハンドラーの作成」を参照してください。

ドロップ ハンドラーが初期化されると、シェルはハンドラーの IDropTarget インターフェイスで適切なメソッドを呼び出します。

手順 2: ドロップ ハンドラーを登録する

ドロップ ハンドラーは、このファイルの種類のサブキーの下に登録されます。

HKEY_CLASSES_ROOT
   ProgID
      shellex
         DropHandler

ハンドラー用にという名前の DropHandler のサブキーを作成し、サブキーの既定値をハンドラーの CLSID GUID の文字列形式に設定します。 シェル拡張ハンドラーを登録する方法の一般的な説明については、「 シェル拡張ハンドラーの作成」を参照してください。

次の例は、.myp ファイルの種類の例に対してドロップ ハンドラーを有効にするレジストリ エントリを示しています。

HKEY_CLASSES_ROOT
   .myp
      (Default) = MyProgram.1
   CLSID
      {00000000-1111-2222-3333-444444444444}
         InProcServer32
            (Default) = C:\MyDir\MyCommand.dll
            ThreadingModel = Apartment
   MyProgram.1
      (Default) = MyProgram Application
      shellex
         DropHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

シェル拡張機能ハンドラーの作成

IDropTarget

IPersistFile