如何建立拖放處理程式
根據預設,檔案不是拖放目標。 您可以藉由實作和註冊 拖曳處理程式,將檔案類型 的成員 設定為置放目標。
如果拖放處理程式已註冊至某個檔案類型,則在物件被拖曳到或放置在該檔案類型的成員上時,會呼叫它。 Shell 透過在處理程序的 IDropTarget 介面上呼叫適當的方法來管理操作。
建立殼層延伸模組處理程式中討論實作和註冊殼層延伸模組處理程式的一般流程。 本文件著重於與拖放處理程序相關的特定實作層面。
說明
步驟 1:實作置放處理程式
如同所有 Shell 擴充處理程式,卸除處理程式都是實作為 DLL 的同進程元件物件模型 (COM) 物件。 它們除了 IUnknown之外,還會匯出兩個介面:IPersistFile,IDropTarget。
殼層會透過其 IPersistFile 介面來初始化處理程式。 它會使用此介面來要求處理程式的類別識別碼 (CLSID),並提供檔案的名稱。 如需如何實作 Shell 擴充處理常式的一般討論,包括 IPersistFile 介面,請參閱 建立 Shell 擴充處理常式。
初始化卸除處理程序之後,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}
相關主題