如何建立置放處理常式

根據預設,檔案不會卸載目標。 您可以藉由實作和註冊置放處理常式,將檔案類型的成員設為置放目標。

如果卸載處理常式已註冊檔案類型,每當物件被拖曳或卸載到檔案類型的成員時,就會呼叫它。 Shell 會藉由在處理常式的 IDropTarget 介面上呼叫適當的方法來管理作業。

建立 殼層延伸模組處理常式中會討論實作和註冊 Shell 延伸模組處理常式的一般程式。 本檔著重于卸載處理常式特有的實作層面。

指示

步驟 1:實作置放處理常式

如同所有殼層擴充處理常式,置放處理常式是同進程元件物件模型, (COM) 實作為 DLL 的物件。 除了 IUnknown之外,它們還會匯出兩個介面: IPersistFileIDropTarget

Shell 會透過其 IPersistFile 介面初始化處理常式。 它會使用此介面來要求處理常式的類別識別碼, (CLSID) 並提供檔案名。 如需如何實作殼層擴充處理常式的一般討論,包括 IPersistFile 介面,請參閱 建立殼層擴充處理常式

一旦初始化置放處理常式,Shell 就會在處理常式的 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}

建立 Shell 擴充功能處理常式

IDropTarget

IPersistFile