Jak tworzyć obsługujące pola upuszczania
Domyślnie pliki nie są obiektami docelowymi. Możesz uczynić członków typu pliku docelowymi miejscami upuszczania, implementując i rejestrując obsługę upuszczania .
Jeśli procedura obsługi upuszczania jest zarejestrowana dla typu pliku, jest wywoływana za każdym razem, gdy obiekt zostanie przeciągnięty lub porzucony na elemencie członkowskim typu pliku. Powłoka zarządza operacją, wywołując odpowiednie metody w interfejsie IDropTarget programu obsługi.
Ogólne procedury implementowania i rejestrowania rozszerzeń powłoki zostały omówione w Tworzenie obsługiwaczy rozszerzeń powłoki. Ten dokument koncentruje się na tych aspektach implementacji, które są specyficzne dla procedur obsługi porzucania.
Instrukcje
Krok 1. Implementowanie procedur obsługi porzucania
Podobnie jak wszystkie uchwyty rozszerzeń powłoki, uchwyty przeciągania i upuszczania są obiektami modelu obiektów składników (COM) implementowanymi jako biblioteki DLL. Eksportują dwa interfejsy oprócz IUnknown: IPersistFile i IDropTarget.
Powłoka inicjuje obsługę za pomocą interfejsu IPersistFile. Używa tego interfejsu do żądania identyfikatora klasy programu obsługi (CLSID) i przekazuje mu nazwę pliku. Ogólne omówienie sposobu implementowania narzędzi obsługi rozszerzeń powłoki, w tym interfejsu IPersistFile, zobacz Tworzenie programów rozszerzeń powłoki.
Po zainicjowaniu uchwytu przeciągania/opuszczania, system wywołuje odpowiednią metodę w interfejsie IDropTarget programu obsługi.
Krok 2. Rejestrowanie procedur obsługi porzucania
Procedury obsługi przeciągania i upuszczania są rejestrowane w podkluczu tego typu pliku.
HKEY_CLASSES_ROOT
ProgID
shellex
DropHandler
Utwórz podklucz DropHandler o nazwie programu obsługi i ustaw wartość domyślną podklucza na tekstową postać identyfikatora GUID CLSID programu obsługi. Aby zapoznać się z ogólnym omówieniem sposobu rejestrowania procedur obsługi rozszerzeń powłoki, zobacz Creating Shell Extension Handlers.
Poniższy przykład ilustruje wpisy rejestru, które umożliwiają procedurę obsługi upuszczania dla przykładowego typu pliku .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}
Tematy pokrewne