Interakce webových stránek s aplikací ve Windows
Červenec 18th, 2007
Web v posledních letech zažívá velký rozmach hlavně co se počtu aplikací a způsobů použití týká. Nicméně stále je spousta akcí, na které je nutné spouštět aplikace na klientském PC (příkladem může být aplikace zprostředkující vkládání obrázků na server přímo ze schránky – je to vhodné pro administrační systémy a podobné případy, kdy máme možnost klientovi do PC nainstalovat náš program).
Otázkou ale zůstává, jak libovolný prohlížeč donutit spustit právě naši aplikaci s danými parametry. Odpověď je jednoduchá, přesto však ne každý ví jak to provézt – zaregistrujeme ve Windows vlastní „protokol“ a nasměrujeme jeho zpracování na naší aplikaci. Tento postup není nijak komplikovaný a jediné co potřebujeme je textový editor, administrátorská práva a onu aplikaci která bude požadavky zpracovávat…
Praktický příklad
Představte si modelovou situaci, kdy se po kliknutí na odkaz v libovolném webovém prohlížeči (nebo e-mailu) otevře vždy Internet Explorer se zadanou adresou. Vytvoříme si tedy protokol „ieopen://“ kterému budeme předávat celou adresu, tedy formát zadání bude například: „ieopen://http://blog.red-pill.cz/“. Napřed tedy v registrech Windows založíme onen protokol a nasměrujeme ho na aplikaci „c:\Program Files\IEopen\ieopen.exe“ (při hromadném použití by toto měl do registrů vkládat instalátor podle cesty do které uživatel program instaluje). Lepší je podle mě vytvářet .reg soubory a ty zavádět do registru celé, všechny údaje tak máme ke kontrole připravené před sebou ještě před samotným zápisem. Do souboru protokol.reg vložím zapíšu následující.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ieopen] @=„URL:IE Open Protocol“ „URL Protocol“=""
[HKEY_CLASSES_ROOT\ieopen\shell]
[HKEY_CLASSES_ROOT\ieopen\shell\open]
[HKEY_CLASSES_ROOT\ieopen\shell\open\command]
@=„c:\\Program Files\\IEopen\\ieopen.exe %1“Všimněte si že zpětná lomítka v cestě jsou zdvojená a že se programu předává parametr %1 který obsahuje onu námi zadanou adresu (včetně ieopen:// na začátku!).
Následuje napsání jednoduché aplikace, která url převezme z parametru a spustí v Internet Exploreru. Zdrojový kód v Delphi může vypadat například takto:
program ieopen;
uses
Windows, SysUtils, Dialogs, ShellApi;
{$R *.res}
var
URL: String;
begin
URL := ParamStr(1);
if (StrLen(PChar(URL))>9) then
begin
URL := Copy(Url, 10, StrLen(PChar(URL))-9);
ShellExecute(0, nil, ‚iexplore.exe‘, PChar(URL), nil, sw_show);
end;
Po instalaci aplikace do správného adresáře a vložení informací do registru se při zadání ieopen:// a adresy vždy spustí pouze Internet Explorer s danou stránkou, vyzkoušet to můžete zde ;o)
Tento postup je vhodný zejména ke spouštění administrativních aplikací, usnadňování práce či technické podpory ve společnostech (například odeslání snímku obrazovky či přizvání it-technika k vzdálené pomoci přímo z intranetu či emailu), ale své uplatnění najde i při spouštění her herních klientů (kdy je například seznam serverů na stránce a po rozklepnutí je ihned spuštěna hra a připojena ke správné adrese) a podobně.
Na závěr přikládám .reg soubor, zdrojové kódy i zkompilovanou
aplikaci. Snad vám tento jednoduchý návod pomůže ;o)
DOWNLOAD
Petr
Home
Říjen 13th, 2007 at 14.37
A co kdyby někdo chtěl otevřít adresu
ieopen://http://blog.red-pill.cz/?Říjen 13th, 2007 at 14.38
Jej, chybka, myslel jsem
ieopen://ieopen://ieopen://http://blog.red-pill.cz/