ドロップ ハンドラーを作成する方法
既定では、ファイルはドロップ ターゲットではありません。 ドロップ ハンドラーを実装して登録することで、 ファイルの種類 のメンバーを ドロップ ターゲットにすることができます。
ドロップ ハンドラーがファイルの種類に登録されている場合は、オブジェクトがファイルの種類のメンバーにドラッグ またはドロップされるたびに呼び出されます。 シェルは、ハンドラーの IDropTarget インターフェイスで適切なメソッドを呼び出すことによって、操作を管理します。
シェル拡張ハンドラーを実装および登録するための一般的な手順については、「 シェル拡張ハンドラーの作成」を参照してください。 このドキュメントでは、ドロップ ハンドラーに固有の実装の側面に焦点を当てています。
Instructions
手順 1: ドロップ ハンドラーの実装
すべてのシェル拡張ハンドラーと同様に、ドロップ ハンドラーは DLL として実装されたインプロセス コンポーネント オブジェクト モデル (COM) オブジェクトです。 IUnknown に加えて、IPersistFile と IDropTarget という 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}
関連トピック