|
|
Autorun.inf állomány generáló komponens
|
|
Példaprogram letöltése
8886 bájt
|
CD-ROM-ok gyökérkönyvtárában gyakran találkozhatunk az Autorun.inf nevű fájllal. Többek között ez teszi lehetővé a CD-n található alkalmazás automatikus elindítását a CD behelyezésekor. Ha gyakran készítünk ilyen állományokat, akkor biztosan hasznos lesz számunkra egy komponens, amellyel ezt könnyedén megtehetjük akár programból is.
A mellékelt példaprogram megnyitása előtt az Autorun.pas-ban lévő komponenst telepítenie kell a Delphi alá.
Először is nézzük át, hogy hogyan épül fel az Autorun.inf állomány. Ez egy szöveges állomány, melynek szerkezete leginkább az INI fájlokéhoz hasonlít, de speciális tartalommal. A következő példában jól látszik a fájl felépítése:
[autorun]
open=konyvtar\valami.exe
icon= konyvtar\valami.exe,2
label=Animare Példaprogram
shell=Program telepítése
shell\command=setup.exe
shell\readme=Információk
shell\readme\command=readme.txt
Az open kulcsszó után adhatjuk meg azt az állományt, melyet a CD behelyezésekor automatikusan futtatni szeretnénk. Az icon a CD-ROM ikonjának nevét és elérési útvonalát adja meg. A label kulcsszó után adhatjuk meg a CD-lemez nevét. Ha ezt nem adjuk meg, akkor alapértelmezetten az open kulcsszó után megadott állomány ikonja fog látszani. A fenti példában a valami.exe program második ikonját adtuk meg.
Ha szeretnénk a CD-ROM-hoz saját menüpontokat rendelni, akkor azt a shell kulcsszó segítségével tehetjük meg. A fenti példában az alapértelmezett menüpont a "Program telepítése" lesz, mely a CD főkönyvtárában lévő setup.exe állományt indítja. A második menüpontnál a shell után még egy tetszőleges azonosítót is meg kell adnunk, ez példánkban a "readme" szó.
Természetesen minden kulcsszó opcionális, mindig csak azt használjuk, amire szükségünk van.
A TAutorun komponensben mindezeket az adatokat beállíthatjuk, majd az Execute metódus meghívásával létrehozhatjuk az autorun.inf fájlt. A Drvlabel property-ben adhatjuk meg a CD nevét, az Icon-ban az ikont tartalmazó elérési útvonalát és nevét, az Open property-ben a futtatandó fájl nevét és elérési útvonalát. A ShellText property az alapértelmezett menüpont szövege, a Shell property pedig az ehhez tartozó parancs. A ShellItems property-ben további shell menüpontokat és parancsokat adhatunk meg. Mivel ez a property a TOwnedCollection-ból származik, azért a felvehető elemek számának csak a józanész szab határt. A SavePath property-ben adhatjuk meg azt a könyvtárt, ahova a fájlt menteni szeretnénk. Az open és icon property-kben található elérési útvonalból automatikusan törli az itt beállított útvonalat.
A fájl mentésére sokféle módszert használhatnánk, de mivel a fájl szerkezete nagyon hasonlít egy INI fájl szerkezetére, ezért a legcélszerűbb a TIniFiles osztály használata erre a célra.
procedure TAutorun.Execute;
var
AutorunInf:TIniFile;
FileName:string;
i: integer;
begin
try
A FileName változóban eltároljuk a fájl nevét és útvonalát. Ha a fájl már létezik, akkor töröljük azt. Azért van szükség a törlésre, mivel lehetnek olyan kulcsszavak, amiket mi nem használunk, de a már meglévő fájlban benne vannak. Mivel mi csak azokat az adatokat írjuk ki a fájlba, amiket beállítottunk, így a régi adatok változatlanok maradnának, és ez hibához vezethetne.
A TIniFile osztály Create függvényével létrehozzuk a fájlt, majd egyenként kiírjuk azokat az adatokat, melyeket megadtunk.
FileName:=FSavePath+'autorun.inf';
if FileExists(FileName) then DeleteFile(FileName);
AutorunInf:=TIniFile.Create(FileName);
if FOpen<>'' then
AutorunInf.WriteString('autorun', 'open', FOpen);
if FIcon<>'' then
AutorunInf.WriteString('autorun', 'icon', FIcon);
if FDrvLabel<>'' then
AutorunInf.WriteString('autorun', 'label', FDrvLabel);
if FShell<>'' then
AutorunInf.WriteString('autorun', 'shell\command', FShell);
if FShellText<>'' then
AutorunInf.WriteString('autorun', 'shell', FShellText);
i:=0;
while i<FShellItems.Count do begin
AutorunInf.WriteString('autorun', 'shell\'+FShellItems[i].FVerb+'\command', FShellItems[i]
.FCommand);
AutorunInf.WriteString('autorun', 'shell\'+FShellItems[i].FVerb, FShellItems[i].FMenuText);
inc(i);
end;
except
end;
end;
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 297. oldal
Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!
|