Co znamenajφ ty zvlßÜtnφ pojmy ActiveX a Win32API? K Φemu mi to je dobrΘ a jak to m∙₧u pou₧φt? Vφce v Φlßnku ...
V programovßnφ pro Windows nemajφ v²vojß°i k dispozici jen syntaxe danΘho jazyka, ale °adu dalÜφch komponent obsa₧en²ch ji₧ v SystΘmu nebo v systΘmov²ch souborech DLL (DynamickΘ knihovny) a OCX (Objekty ActiveX). TakovΘ Ovlßdacφ prvky a Funkce jsou pak p°φstupnΘ ka₧dΘmu jazyku.
ActiveX
jsou to komponenty (v∞tÜinou Ovlßdacφ prvky - Objekty), kterΘ (pokud jsou zaregistrovanΘ v SystΘmu) m∙₧ete vyu₧φvat jako klasickΘ Objekty z VB (ty jsou vlastn∞ takΘ Objekty ActiveX). Rovnou si to ukß₧eme na p°φklad∞: Chcete-li p°idat tyto objekty do IDE Visual Basicu, klepn∞te prav²m tlaΦφtkem myÜi na Nßstrojovou liÜtu (ToolBox), v plovoucφ nabφdce vyberte Components... a vÜechny (nainstalovanΘ) ActiveX prvky mßte p°ed sebou. Pou₧itφ t∞chto Objekt∙ je stejn∞ snadnΘ, jako pou₧itφ standardnφch prvk∙ jako t°eba TextovΘ pole.
Pro ukßzku typickΘho ActiveX objektu si ukß₧eme Prohlφ₧eΦ sφt∞ WWW od Microsoftu, kter² je vyu₧φvßn samotn²m Internet Explorerem. (To, ₧e IE zabφrß tak mßlo mφsta je klamnΘ, proto₧e teprve vlastnφ HTML p°ekladaΦ sφdlφcφ v SystΘmu zabφrß asi 50MB.) Tedy v seznamu si najd∞te polo₧ku Microsoft Internet Controls, zaÜkrtn∞te a potvr∩te Ok. V NßstrojovΘ liÜt∞ by se m∞la objevit ikonka zem∞koule. Vlo₧it Objekt WebBrowser na Formulß° zvlßdne ka₧d² :-). Roztßhn∞te WebBrowser do kraj∙ Formulß°e, do procedury Form_Load() zadejte:
WebBrowser1.Navigate "http://www.mujchat.cz/qpress"
a spus¥te Projekt (F5). Pokud jste zrovna p°ipojeni k Internetu, zobrazφ se vßm Speed Express, v opaΦnΘm p°φpad∞ prohlφ₧eΦ zobrazφ znßmou strßnku, ₧e po₧adovan² dokument nebyl nalezen :-). Kdy₧ si s WebBrowserem budete chvφli hrßt, zjistφte, ₧e vßÜ program m∙₧e reagovat na zm∞nu Titulku strßnky (Procedura Title_Change()) a °adu dalÜφch v∞cφ, ale nejsem tu p°ece od toho, abych vßs uΦil, jak pracovat s WebBrowserem, tento Projekt v pokroΦilejÜφm stßdiu si m∙₧ete stßhnout na adrese http://ts.euweb.cz/vb/webbrowser.zip.
Pokud jste Ü¥astn²mi vlastnφky VB6 Professional Edition, m∙₧ete si vytvß°et i vlastnφ ActiveX komponenty. Vφce se o tΘto technologii zmi≥ovat nebudu, proto₧e to ani nenφ pot°eba (a jß toho tolik zase takΘ nevφm).
Win32API
tato technologie, jak ji₧ sßm nßzev napovφdß, je p°φstupnß ve Win32 prost°edφ (pozn.: jinΘ OS majφ takΘ svΘ API). API (AplikaΦnφ ProgramovΘ Rozhranφ) jsou Funkce OperaΦnφho systΘmu obsa₧enΘ v Dynamick²ch knihovnßch (DLL). Jejich pou₧itφ je vφcemΘn∞ jednoduchΘ: volßte urΦitou Funkci z urΦitΘ knihovny (a samoz°ejm∞) s n∞jak²mi parametry. Pokud je volanß knihovna obsa₧ena p°φmo ve Windows (Kernel32, User32, Rundll32, ...), staΦφ pou₧φt pouze jejφ nßzev, ale pokud mßte knihovnu od jinΘho autora (ne-li vlastnφ), nejjist∞jÜφ je, umφstit ji do adresß°e programu, proto₧e je t°eba zadat jejφ cestu. Ta m∙₧e b²t i relativnφ, tudφ₧ v naÜem p°φpad∞ staΦφ zapsat jen nßzev souboru. API Funkce se deklarujφ (definujφ) v deklaraΦnφ Φßsti Modulu nebo Formulß°e.
P°φklad deklarace:
API Funkce ze SystΘmovΘ knihovny:
Private Declare Function NazevFunkce Lib "Knihovna32" (ByVal Argument1 As Typ, ByVal Argument2 As Typ) As TypNavratoveHodnoty
API Funkce z jinΘ knihovny:
Private Declare Function NazevFunkce Lib "Knihovna.dll" (ByVal Argument1 As Typ, ByVal Argument2 As Typ) As TypNavratoveHodnoty
Poznßmka: p°i deklaraci v Modulu m∙₧ete vynechat "Private"
Volßnφ Funkcφ API za b∞hu programu je ·pln∞ stejnΘ, jako volßnφ obyΦejn²ch Funkcφ VB (Φi vlastnφch).
P°φklad pou₧itφ API v praxi vßm ukß₧u na Funkcφch slou₧φcφch k prßci se soubory typu INI (o tom jsem se zmi≥oval v minulΘm dφle) a jeliko₧ by v²pis k≤du tohoto Projektu byl p°φliÜ zdlouhav² a nudn², op∞t jsem jej pro vßs p°ipravil ke sta₧enφ: http://ts.euweb.cz/vb/ini-files.zip. VÜechny poznßmky ke k≤du jsou obsa₧eny v Projektu.
API Funkcφ je nep°ebernΘ mno₧stvφ, jejich v²pis a Syntaxe najdete v programu API-Viewer, kter² je souΦßstφ Visual Studia 6.0 Profesional Edition, tedy pokud mßte Profesional edici Visual Basicu, mßte takΘ tento prohlφ₧eΦ. V²klad o rozhranφ Win32API najdete i ve stejnojmennΘ p°φruΦΦe od Grada Publishing, jen je problΘm, ₧e veÜkerß dokumentace k tomuto rozhranφ je pro jazyk C++ a pro VB mo₧nß ani ne v AngliΦtin∞. UrΦit∞ vßs napadajφ otßzky, k Φemu vÜemu lze API vyu₧φt. To je trochu moc i na m∞. Jednu API je mo₧nΘ vyu₧φt u n∞kolika operacφ, ale jsou i takovΘ, kterΘ majφ jednoznaΦn² ·kol (nap°.: zobrazenφ/skrytφ Formulß°∙ jinΘho programu). Jak jsem se ji₧ d°φve zmi≥oval, existujφ Funkce, pomocφ kter²ch m∙₧ete: odhlßsit u₧ivatele, restartovat poΦφtaΦ nebo ho i vypnout; vytvß°et Formulß°e vÜelijak²ch tvar∙; schovßvat Plochu nebo liÜtu Start; blokovat p°φstup k r∙zn²m nastavenφm; pracovat se SystΘmov²m Registrem; zachytßvat klßvesovΘ vstupy; zjiÜ¥ovat pozici kurzoru myÜi nad objekty nebo jeho sou°adnice a samoz°ejm∞ °adu dalÜφch, nejen kuri≤znφch (jako t°eba zm∞na obrßzku na tlaΦφtku Start), Funkcφ slou₧φcφch k provedenφ operacφ, na kterΘ pouh² programovacφ jazyk nemß.
No, jß si myslφm, ₧e by to mohlo staΦit, nevφm, co bych k tomu m∞l jeÜt∞ °φct, ale pokud mßte n∞jakΘ konkrΘtnφ otßzky, napiÜte mi na adam.home@atlas.cz.
Doslov:
o dalÜφm pokraΦovßnφ jsem zatφm neuva₧oval, bylo by dobrΘ napsat n∞co o Databßzφch, ale t∞m nerozumφm po°ßdn∞ ani jß. Pokud by to vyÜlo, mohl bych pro ty, kte°φ neodebφrajφ Φasopis Chip s CD, sehnat povφdßnφ o Databßzφch (Chip CD 7/00 a 8/00). K tomu bych jeÜt∞ p°idal sv∙j v²klad o pokroΦilejÜφm SouborovΘm systΘmu a dalÜφ dφl by byl na sv∞t∞. To vÜe je ale zatφm otßzka (- Ükola volß).
|