HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

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;


Cikksorozat

#IDKategóriaCikk címeSorozat
3333WindowsNet Shell parancsok1. rész
3367WindowsNet Shell parancsok2. rész
3396WindowsNet Shell parancsok3. rész


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!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |