共用方式為


如何建立數據處理者

當檔案複製到剪貼簿或拖放時,Shell 會建立支援各種標準 剪貼簿格式的數據物件,。 對於屬於特定文件類型的檔案,您可以實作和註冊 數據處理來擴充可用的剪貼簿格式。 在傳輸特定類型的檔案時,如果使用其中一種自訂格式,Shell 會將對數據物件的 IDataObject 介面的呼叫委派給數據處理程序。

建立 Shell 延伸模組處理程式中討論了實作及註冊延伸模組處理程式的一般程序。 本文件著重於針對數據處理者的實施特定層面。

指示

步驟 1:實作數據處理程序

如同所有 Shell 延伸模組處理程式,數據處理程式都是實作為 DLL 的同進程元件物件模型 (COM) 物件。 它們除了 IUnknown之外,還會匯出兩個介面:IPersistFileIDataObject

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

初始化數據處理程序之後,Shell 會在使用其中一種自定義格式時,從數據物件呼叫至處理程式的 IDataObject 介面。

步驟 2:註冊數據處理者

數據類型的 ProgID 子機碼下註冊數據處理程式,如下所示:HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler

DataHandler 下,為處理程式創建一個以該處理程式命名的子金鑰,並將該處理程式子金鑰的預設值設定為該處理程式的 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
         DataHandler
            (Default) = {00000000-1111-2222-3333-444444444444}

建立殼層擴充處理程式

IPersistFile

IDataObject