Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Po kliknutí pravým tlačítkem myši na objekt obvykle dojde k zobrazení místní nabídky . Tato nabídka obsahuje seznam příkazů, které uživatel může vybrat k provádění různých akcí u objektu. Tato část je úvodem do kontextových nabídek pro objekty systému souborů.
- místní nabídky pro objekty systému souborů
- příkazy kontextové nabídky
- Rozšíření místní nabídky pro typ souboru
- Rozšíření místní nabídky pro předdefinované Shell objekty
- registraci aplikace pro zpracování libovolných typů souborů
- rozšíření nové podnabídky
Další informace najdete tady:
Kontextové nabídky pro objekty systému souborů
Když uživatel klikne pravým tlačítkem myši na objekt, například na soubor, který se zobrazí v Průzkumníku Windows nebo na ploše, zobrazí se místní nabídka se seznamem příkazů. Uživatel pak může provést akci se souborem, například jeho otevřením nebo odstraněním, výběrem příslušného příkazu.
Vzhledem k tomu, že kontextové nabídky se často používají ke správě souborů, Shell poskytuje sadu výchozích příkazů, jako je Vyjmout a Kopírovat, které se zobrazí v kontextové nabídce pro libovolný soubor. Všimněte si, že i když je Open With výchozím příkazem, nezobrazuje se u některých standardních typů souborů, jako je například .wav. Následující ilustrace adresáře Můj Dokumenty, který byl také použit jako příklad v části Přizpůsobení ikon, ukazuje výchozí místní nabídku, která se zobrazila při kliknutí pravým tlačítkem myši na MyDocs4.xyz.
Důvod, proč MyDocs4.xyz zobrazuje výchozí kontextovou nabídku, je ten, že není součástí registrovaného typu souboru . Na druhou stranu .txt je registrovaný typ souboru. Pokud kliknete pravým tlačítkem myši na jeden ze souborů .txt, zobrazí se místní nabídka se dvěma dalšími příkazy v jeho horní části: Otevřít a Tisk.
Jakmile je daný typ souboru zaregistrován, můžete rozšířit jeho kontextovou nabídku o další příkazy. Zobrazí se nad výchozími příkazy, když na některý soubor daného typu kliknete pravým tlačítkem myši. I když je většina příkazů přidaných tímto způsobem běžná, například Tisk nebo Otevřít, můžete přidat libovolný příkaz, který by mohl uživatel najít užitečné.
Vše, co je nutné ke rozšíření kontextové nabídky pro typ souboru, je vytvořit položku registru pro každý příkaz. Sofistikovanějším přístupem je implementace obslužné rutiny místní nabídky, která umožňuje rozšířit místní nabídku pro typ souboru na bázi jednotlivých souborů. Další informace naleznete v tématu Vytváření obslužných rutin místní nabídky.
Slovesné příkazy zástupcového menu
Každý příkaz v místní nabídce je identifikován v registru podle jeho verb. Tyto příkazy jsou stejné jako příkazy používané ShellExecuteEx při programovém spouštění aplikací. Další informace o použití ShellExecuteExnaleznete v diskuzi v spouštění aplikací.
A verb je jednoduchý textový řetězec, který slouží Shell k identifikaci přidruženého příkazu. Každý verb odpovídá řetězci příkazu použitému ke spuštění příkazu v okně konzoly nebo dávkovém souboru (.bat). Například otevřeníverb obvykle spustí program pro otevření souboru. Jeho příkazový řetězec obvykle vypadá nějak takto:
"My Program.exe" "%1"
"%1" je standardní zástupný symbol pro parametr příkazového řádku zadaný s názvem souboru. Může například zadat konkrétní stránku, která se má zobrazit v zobrazení s kartami.
Poznámka
Pokud některý prvek příkazového řetězce obsahuje nebo může obsahovat mezery, musí být uzavřen v uvozovkách. V opačném případě, pokud prvek obsahuje mezeru, nebude správně parsovat. Například "My Program.exe" (Moje Program.exe) spustí aplikaci správně. Pokud použijete my Program.exe, systém se pokusí spustit "My" s "Program.exe" jako první argument příkazového řádku. Vždy byste měli použít uvozovky s argumenty, jako je například "%1", které jsou rozšířené na řetězce pomocí Shell, protože si nemůžete být jisti, že řetězec nebude obsahovat mezeru.
Slovesa mohou mít také přidružený zobrazovaný řetězec, který se zobrazí v místní nabídce místo samotného verb řetězce. Například zobrazovaný řetězec pro openas je Open With. Stejně jako u běžných řetězců nabídek, zahrnutí ampersandu (&) do řetězce zobrazení umožňuje výběr příkazu pomocí klávesnice.
Kanonické slovesa
Obecně platí, že aplikace zodpovídají za poskytování lokalizovaných zobrazovaných řetězců pro příkazy, které definují. Pro zajištění nezávislosti jazyka však systém definuje standardní sadu běžně používaných sloves označovaných jako kanonické příkazy. Kanonický verb lze použít s libovolným jazykem a systém automaticky vygeneruje správně lokalizovaný zobrazovaný řetězec. Například zobrazovaný řetězec otevřeníverb bude nastaven na Hodnotu Otevřít v anglickém systému a na hodnotu Öffnen v německém systému.
Kanonická slovesa zahrnují:
| Hodnota | Popis |
|---|---|
| otevřený | Otevře soubor nebo složku. |
| otevřít nový | Otevře soubor nebo složku v novém okně. |
| tisknout | Vytiskne soubor. |
| prozkoumat | Otevře Průzkumníka Windows s vybranou složkou. |
| najít | Otevře dialogové okno Windows Search se složkou nastavenou jako výchozí umístění hledání. |
| otevřít jako | Otevře dialogové okno Otevřít pomocí. |
| vlastnosti | Otevře seznam vlastností objektu. |
Printto verb je také kanonický, ale nikdy se nezobrazí. Umožňuje uživateli vytisknout soubor přetažením do objektu tiskárny.
Rozšířená slovesa
Když uživatel klikne pravým tlačítkem myši na objekt, místní nabídka obsahuje všechny standardní příkazy. Můžou však existovat příkazy, které chcete podporovat, ale nechcete, aby se zobrazovaly v každé místní nabídce. Můžete mít například příkazy, které se běžně nepoužívají nebo jsou určené zkušeným uživatelům. Z tohoto důvodu můžete také definovat jedno nebo více rozšířených sloves . Tyto příkazy jsou také řetězce znaků a jsou podobné normálním slovesům. Rozlišují se od normálních sloves způsobem, jakým jsou registrovány. Pokud chcete mít přístup k příkazům přidruženým k rozšířeným příkazům, musí uživatel při stisknutí klávesy SHIFT kliknout pravým tlačítkem myši na objekt. Rozšířené příkazy se pak zobrazí spolu s běžnými příkazy.
Rozšíření místní nabídky pro typ souboru
Nejjednodušší způsob, jak rozšířit místní nabídku pro typ souboru, je pomocí registru. Uděláte to tak, že pod klíč ProgID aplikace přidáte Shell podklíč související s typem souboru. Volitelně můžete definovat výchozí verb hodnotu pro typ souboru tak, že nastavíte výchozí hodnotu podklíče Shell .
Výchozí hodnota verb se zobrazí jako první v kontextové nabídce. Jejím účelem je poskytnout Shell prostředek verb, který může být použit, když je volána ShellExecuteEx, ale verb není zadán. Při Shell použití ShellExecuteEx tímto způsobem nemusí nutně vybrat výchozí verb hodnotu. Od Shellverze 5.0 a novější, která se nachází na systémech Windows 2000 a novějších, Shell používá první dostupný verb z následujícího seznamu. Pokud není k dispozici žádná, operace selže.
- Otevřít verb
- Výchozí hodnota verb
- První verb v registru
- Openwith verb
U Shell verzí starších než 5.0 vynecháte třetí položku.
Pod podklíčem Shell vytvořte jeden podklíč pro každý verb, který chcete přidat. Každý z těchto podklíčů bude mít REG_SZ hodnotu nastavenou na verbzobrazovaný řetězec. Pro kanonické příkazy můžete vynechat zobrazovaný řetězec, protože systém automaticky zobrazí správně lokalizovaný řetězec. Pokud vynecháte zobrazovaný řetězec pro nekanonická slovesa, řetězec verb se zobrazí. Pro každý verb podklíč vytvořte podklíč příkazu s výchozí hodnotou nastavenou na řetězec příkazu.
Následující obrázek ukazuje místní nabídku pro typ souboru .myp použitý v typy souborů a Přizpůsobení ikon. Nyní má v místní nabídce příkazy otevřít, doit, tisk a printto, přičemž doit je výchozí verb. Kontextová nabídka vypadá takto.
Položky registru použité k rozšíření místní nabídky zobrazené na předchozím obrázku jsou:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
(Default) = MyProgram Application
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4
I když příkaz Otevřít v je nad prvním oddělovačem, systém ho automaticky vytvoří a nevyžaduje položku registru. Systém automaticky vytvoří zobrazené názvy pro kanonická slovesa „otevřít“ a „tisknout“. Vzhledem k tomu, že "doit" není kanonický verb, je mu přiřazen zobrazovaný název "&Do It", který lze vybrat stisknutím klávesy D. Printto verb se nezobrazuje v místní nabídce, ale zahrnutím této možnosti umožňuje uživateli tisknout soubory tak, že je přetáhne na ikonu tiskárny. V tomto příkladu %1 představuje název souboru a %2 název tiskárny.
Příkazy je možné potlačit prostřednictvím nastavení zásad přidáním hodnoty SuppressPolicy do verbklíče. Nastavte hodnotu SuppressionPolicy na ID zásady. Pokud je zásada zapnutá, verb a odpovídající položka místní nabídky jsou potlačeny. Možné hodnoty ID zásad najdete v RESTRICTIONS seznamu.
Rozšiřování nabídky pro objekty Shell předdefinované
Mnoho předdefinovaných Shell objektů má kontextové nabídky, které lze rozšiřovat. Zaregistrujte příkaz stejným způsobem, jakým registrujete typické typy souborů, ale jako název typu souboru použijte název předdefinovaného objektu.
Seznam předdefinovaných objektů najdete v části Předdefinované Shell objekty v části Vytváření Shell obslužných rutin rozšíření. Tyto předdefinované Shell objekty, jejichž místní nabídky lze rozšířit přidáním sloves v registru, jsou v tabulce označené slovem "Verb.
Registrace aplikace pro zpracování libovolných typů souborů
Předchozí části tohoto dokumentu se zabývaly definováním položek místní nabídky pro konkrétní typ souboru. Definování místní nabídky mimo jiné umožňuje určit, jak přidružená aplikace otevírá soubor daného typu. Jak je však popsáno v Typy souborů, aplikace mohou také zaregistrovat samostatný výchozí postup, který se použije, když se uživatel pokusí použít vaši aplikaci k otevření typu souboru, který jste nepřidružili k aplikaci. Toto téma se zde diskutuje, protože zaregistrujete výchozí postup stejným způsobem, jakým zaregistrujete položky místní nabídky.
Výchozí postup slouží ke dvěma základním účelům. Jedním z nich je určit, jak se má aplikace vyvolat, aby se otevřel libovolný typ souboru. Můžete například použít příznak příkazového řádku k označení, že se otevírá neznámý typ souboru. Dalším účelem je definovat různé vlastnosti typu souboru, například položky místní nabídky a ikonu. Pokud uživatel přidruží vaši aplikaci k dalšímu typu souboru, bude mít tento typ tyto vlastnosti. Pokud byl další typ souboru dříve přidružen k jiné aplikaci, tyto charakteristiky nahradí originály.
Pokud chcete zaregistrovat výchozí postup, umístěte stejné klíče registru, které jste vytvořili pro ProgID vaší aplikace, pod podklíč aplikací HKEY_CLASSES_ROOT\Aplikace. Můžete také zahrnout hodnotu FriendlyAppName, která systému poskytne popisný název vaší aplikace. Popisný název aplikace může být také extrahován z jejího spustitelného souboru, ale pouze v případě, že chybí hodnota FriendlyAppName. Následující fragment registru představuje ukázkový výchozí postup pro MyProgram.exe, který definuje popisný název a několik položek zkratek nabídky. Řetězce příkazů obsahují příznak /a, který upozorní aplikaci, že otevírá libovolný typ souboru. Pokud zahrnete podklíč DefaultIcon, měli byste použít obecnou ikonu.
HKEY_CLASSES_ROOT
Applications
MyProgram.exe
FriendlyAppName = Friendly Name
shell
open
command
(Default) = C:\MyDir\MyProgram.exe /a "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /a /p "%1" "%2" %3 %4
Rozšíření nové podnabídky
Když uživatel otevře nabídku Soubor v Průzkumníku Windows, první příkaz je Nový. Výběrem tohoto příkazu se zobrazí podnabídka. Ve výchozím nastavení obsahuje dva příkazy, Složka a Zástupce, které uživatelům umožňují vytvářet podsložky a zástupce. Tato podnabídka se dá rozšířit tak, aby zahrnovala příkazy pro vytváření souborů pro libovolný typ souboru.
Pokud chcete do podnabídky New přidat příkaz pro vytvoření souboru, musí mít soubory vaší aplikace typ souboru, s nimi spojené. Do klíče pro příponu názvu souboru vložte podklíč ShellNew. Když je vybrán příkaz Nový v nabídce Soubor, Shell přidá se do podnabídky Nový. Zobrazovaný řetězec příkazu bude popisný řetězec, který je přiřazený k identifikátoru ProgID programu.
Přiřaďte k podklíči ShellNew jednu nebo více datových hodnot, aby bylo možné určit metodu vytvoření souboru. Dostupné hodnoty následují.
| Hodnota | Popis |
|---|---|
| Příkaz | Spustí aplikaci. Jedná se o REG_SZ hodnotu určující cestu aplikace, která se má spustit. Můžete ho například nastavit tak, aby se spustil průvodce. |
| Údaje | Vytvoří soubor obsahující zadaná data. Data je REG_BINARY hodnotou obsahující data souboru. Data se ignorují, pokud je zadána hodnota NullFile nebo FileName. |
| Jméno souboru | Vytvoří soubor, který je kopií zadaného souboru. FileName je hodnota REG_SZ, která je nastavená na plně kvalifikovanou cestu k souboru, který se má zkopírovat. |
| NullFile | Vytvoří prázdný soubor. NullFile není přiřazena hodnota. Pokud je zadán nullFile, data a fileName hodnoty jsou ignorovány. |
Následující obrázek ukazuje podnabídku Nový pro typ souboru .myp použitý jako příklad v Typy souborů a Přizpůsobení ikon. Nyní má příkaz aplikace MyProgram . Když uživatel vybere aplikaci MyProgram z podnabídky Nový , Shell vytvoří soubor s názvem "New MyProgram Application.myp" a předá ji MyProgram.exe.
Položka registru je teď následující:
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
ShellNew
NullFile
MyProgram.1
(Default) = MyProgram Application
DefaultIcon
(Default) = C:\MyDir\MyProgram.exe,2
Shell
(Default) = doit
open
command
(Default) = C:\MyDir\MyProgram.exe "%1"
doit
(Default) = &Do It
command
(Default) = C:\MyDir\MyProgram.exe /d "%1"
print
command
(Default) = C:\MyDir\MyProgram.exe /p "%1"
printto
command
(Default) = C:\MyDir\MyProgram.exe /p "%1" "%2" %3 %4