Sdílet prostřednictvím


Jak vytvořit obslužné rutiny pro kopírování háku

Obecné postupy implementace a registrace obslužné rutiny rozšíření prostředí jsou popsány v Vytváření obslužných rutin rozšíření prostředí. Tento dokument se zaměřuje na aspekty implementace, které jsou specifické pro obslužné rutiny háku pro kopírování.

Instrukce

Krok 1: Implementace CopyHook obslužných rutin

Stejně jako všechny obslužné rutiny rozšíření shellu jsou obslužné rutiny kopírování v-procesu objektové modely (COM) implementované jako knihovny DLL. Kromě IUnknown exportují jedno rozhraní: ICopyHook . Prostředí inicializuje obslužnou rutinu přímo, takže není nutné inicializační rozhraní, jako je IShellExtInit.

Rozhraní ICopyHook má jednu metodu, ICopyHook::CopyCallback. Když se chystáte přesunout složku, shell volá tuto metodu. Předává různé informace, mezi které patří:

  • Název složky.
  • Cíl složky nebo nový název.
  • Operace, kterou se pokouší provést.
  • Atributy zdrojových a cílových složek.
  • Okenní popisovač, který lze použít k zobrazení uživatelského rozhraní.

Když je volána metoda ICopyHook::CopyCallback, vrátí jednu ze tří následujících hodnot, které určují systému, jak má pokračovat.

Hodnota Popis
IDYES Umožňuje operaci.
IDNO Zabrání operaci v této složce. Shell může pokračovat v jiných operacích, které byly schváleny, například operace dávkového kopírování.
IDCANCEL Zabrání aktuální operaci a zruší všechny čekající operace.

 

Krok 2: Registrace obslužných rutin pro kopírování háčků

Obslužné rutiny háků pro složky jsou registrovány v podklíči HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers. Vytvořte podklíč CopyHookHandlers pojmenovanou pro obslužnou rutinu a nastavte výchozí hodnotu podklíče na řetězcový formulář identifikátoru třídy obslužné rutiny (CLSID).

Následující příklad přidá podklíč MyCopyHandler do seznamu kopírovacích obslužných rutin háků Shellu.

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

Obslužné rutiny háku pro objekty tiskárny jsou v podstatě registrovány stejným způsobem. Jediným rozdílem je, že je musíte zaregistrovat v podklíči HKEY_CLASSES_ROOT\Tiskárny.

Poznámky

Uživatelé a aplikace můžou normálně kopírovat, přesouvat, odstraňovat nebo přejmenovat složky s několika omezeními. Implementací obslužné rutiny háku kopírování můžete řídit, jestli se tyto operace provádějí. Například implementace takové obslužné rutiny umožňuje zabránit přejmenování nebo odstranění důležitých složek. Kopírovací obslužné rutiny lze také implementovat pro objekty tiskárny.

Obslužné rutiny pro kopírování jsou globální. Prostředí volá všechny registrované obslužné rutiny pokaždé, když se aplikace nebo uživatel pokusí kopírovat, přesunout, odstranit nebo přejmenovat složku nebo objekt tiskárny. Obslužná rutina neprovádí samotnou operaci. Schválí to nebo vetuje. Pokud všechny obslužné rutiny schválí, Shell provede operaci. Pokud nějaká obslužná rutina operaci vetuje, operace je zrušena a zbývající obslužné rutiny se nevolají. Obslužné rutiny háku kopírování nejsou informované o úspěchu nebo selhání operace, takže je nelze použít k monitorování operací se soubory.

vytváření obslužných rutin rozšíření prostředí

ICopyHook