Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Jak na zástupce
delphi_zastupce
16. března 2001, 00.00 | Častou funkcí (nejen) instalačních programů je přidání
zástupce na Plochu, případně do nabídky
Start. Článek ukazuje, jak tento úkol provést v Delphi.
Častou funkcí (nejen) instalačních programů je přidání zástupce instalované aplikace na Plochu, případně do nabídky Start. Možná jste někdy přemýšleli nad tím, jak to udělat, a pak jste si řekli - to už musel někdo zkoušet přede mnou. Podívali jste se tedy na své oblíbené servery o programování a na Builderu jste natrefili na tento článek :-)
Pokusíme se nyní vytvořit program, který umístí na Plochu svého zástupce. Přesněji řečeno, nebudeme psát celý program, ale jen dvě klíčové procedury - "omáčku" okolo nich si už jistě doplníte sami.
Prvním problémem, se kterým se při tvorbě zástupce musíme vypořádat, je, do jakého adresáře máme zástupce vůbec umístit. Nemůžeme totiž napevno předpokládat, že uživatel má pracovní plochu v adresáři C:\Windows\Plocha. Jsou pro to hned tři důvody:
- Windows můžou být instalovány v jiném adresáři, než C:\Windows.
- Uživatel může používat jinou jazykovou verzi Windows, než je česká či anglická, a název adresáře s pracovní plochou je pak přeložen do daného jazyka.
- Na počítači může být nastaveno několik uživatelských profilů, každý se svou Plochou a nabídkou Start.
Z výše uvedeného seznamu důvodů jasně vyplývá, že adresář pracovní plochy budeme muset zjistit odjinud. Nejjednodušší cesta je načíst ho z registrů. Ve větvi HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders je několik položek, jejichž hodnoty udávají umístění různých speciálních složek v systému. Tady je stručný výtah těch nejpoužívanějších:
Desktop | pracovní plocha |
Start Menu | nabídka Start |
Programs | nabídka Start/Programy |
Personal | složka Dokumenty |
Fonts | složka fontů |
Položek je samozřejmě mnohem víc, liší se také podle verze systému, která je na počítači. Nejlépe asi uděláte, pokud se do registrů podíváte sami - názvy položek jsou většinou "self-descriptive".
První částí našeho programu tedy bude funkce, která jako svůj výsledek vrátí adresář s Plochou. Nesmíme ovšem zapomenout připsat do klauzule uses unitu Registry, protože v ní je uložena třída TRegistry, kterou použijeme pro přístup k registrům.
|
Nyní se dostáváme k druhé části problému - jak vytvořit vlastního zástupce a nastavit mu všechny potřebné parametry. V unitě ShlObj existuje rozhraní IShellLink, které zapouzdřuje pomocí COM objektu všechny potřebné vlastnosti zástupce. Tyto vlastnosti jsou dostupné pomocí metod GetXXX a SetXXX, kde za XXX můžete doplnit cokoliv z následující tabulky:
Path | jméno zastupovaného souboru (včetně cesty) |
Arguments | parametry předávané zastupovanému objektu |
Description | popis zástupce |
Hotkey | klávesová zkratka |
IconLocation | soubor s ikonou zástupce a její pozice (index) v něm |
ShowCmd | způsob, jakým bude zobrazeno okno otevřené po spuštění zástupce |
WorkingDirectory | pracovní adresář |
Jak je vidět, tabulka zhruba odpovídá údajům, které můžete zadat v dialogu Vlastnosti vyvolávaném v Průzkumníku z kontextového menu nad zástupcem.
Tak, teď už vlastní procedura, která vytvoří zástupce aplikace, ve které bude umístěna. Nutno dodat, že je potřeba do výčtu použitých unit zahrnout ShlObj, ComObj a ActiveX, ve kterých jsou definovány používané COM objekty.
|
Výše uvedené procedury můžete snadno upravit podle svých potřeb a jejich přidáním do svých programů je můžete rozšířit o možnost přidat zástupce na Plochu či do nabídky Start.
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007