Udostępnij za pośrednictwem


Jak utworzyć uchwyty zaczepów kopiowania

Ogólne procedury implementowania i rejestrowania programu obsługi rozszerzeń powłoki zostały omówione w Tworzenie programów obsługi rozszerzeń powłoki. Ten dokument koncentruje się na tych aspektach implementacji, które są specyficzne dla procedur obsługi punktów zaczepienia kopiowania.

Instrukcje

Krok 1. Implementowanie procedur obsługi punktów zaczepienia kopiowania

Podobnie jak wszystkie programy obsługi rozszerzeń powłoki, programy obsługi przypinania kopii są obiektami modelu obiektów składników (COM) implementowanych jako biblioteki DLL. Eksportują one jeden interfejs oprócz IUnknown: ICopyHook. Powłoka zainicjuje procedurę obsługi bezpośrednio, więc nie ma potrzeby użycia interfejsu inicjacyjnego, takiego jak IShellExtInit.

Interfejs ICopyHook ma jedną metodę, ICopyHook::CopyCallback . Gdy folder ma zostać przeniesiony, powłoka wywołuje tę metodę. Przekazuje on różne informacje, w tym:

  • Nazwa folderu.
  • Lokalizacja docelowa lub nowa nazwa folderu.
  • Operacja, którą się próbuje wykonać.
  • Atrybuty folderów źródłowych i docelowych.
  • Uchwyt okna, który może służyć do wyświetlania interfejsu użytkownika.

Kiedy wywoływana jest metoda ICopyHook::CopyCallback programu obsługi, zwraca jedną z trzech następujących wartości, aby poinformować powłokę, jak powinna postąpić.

Wartość Opis
IDYES Zezwala na operację.
IDNO Uniemożliwia operację w tym folderze. Powłoka może kontynuować każdą inną operację, która została zatwierdzona, taką jak kopiowanie wsadowe.
IDCANCEL Zapobiega bieżącej operacji i anuluje wszystkie oczekujące operacje.

 

Krok 2: Rejestrowanie uchwytów kopiowania

Programy obsługi zaczepienia kopiowania dla folderów są rejestrowane w podkluczu HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers. Utwórz podklucz CopyHookHandlers nazwany według programu obsługi i ustaw jego wartość domyślną na postać ciągu identyfikatora klasy programu obsługi (CLSID) GUID.

Poniższy przykład pokazuje, jak dodać podklucz MyCopyHandler do listy programów obsługi kopiowania powłoki systemu.

HKEY_CLASSES_ROOT
   Directory
      shellex
         CopyHookHandlers
            MyCopyHandler
               (Default) = {MyCopyHandler CLSID GUID}

Procedury obsługi punktów zaczepienia kopiowania dla obiektów drukarki są rejestrowane w ten sam sposób. Jedyną różnicą jest to, że należy je zarejestrować w podkluczu HKEY_CLASSES_ROOT\Drukarki.

Uwagi

Zwykle użytkownicy i aplikacje mogą kopiować, przenosić, usuwać lub zmieniać nazwy folderów z kilkoma ograniczeniami. Implementując obsługę kopiowania, można kontrolować, czy te operacje mają miejsce. Na przykład zaimplementowanie takiego programu obsługi pozwala zapobiec zmianie lub usunięciu krytycznych folderów. Programy obsługi punktów zaczepienia kopiowania można również zaimplementować dla obiektów drukarki.

Programy obsługi punktów zaczepienia kopiowania są globalne. Powłoka systemowa wywołuje wszystkie zarejestrowane procedury obsługi za każdym razem, gdy aplikacja lub użytkownik próbuje skopiować, przenieść, usunąć lub zmienić nazwę folderu lub elementu drukarki. Obsługujący nie wykonuje samej operacji. Zatwierdza tylko lub zawetuje go. Jeśli wszystkie programy obsługi zatwierdzą, powłoka wykonuje operację. Jeśli jakikolwiek program obsługi zawetuje operację, zostaje ona anulowana, a pozostałe programy obsługi nie są wywoływane. Programy obsługi punktów zaczepienia kopiowania nie są informowane o powodzeniu lub niepowodzeniu operacji, więc nie można ich używać do monitorowania operacji na plikach.

Tworzenie Programów Obsługi Rozszerzeń Powłoki

ICopyHook