Delphi - Alkalmazás indítási paramétereinek lekérdezése

forráskód letöltése
Amikor egy új process-t indítunk, akkor meg kell adnunk, hogy az alkalmazás ablaka milyen pozícióban és méretben jelenjen meg. Amikor a saját alkalmazásunk indul el, akkor az megkapja ugyanezeket a paramétereket. Ha szükségünk van ezekre a tulajdonságokra, akkor lekérdezhetjük ezeket egy Windows API függvénnyel. Erről lesz szó ebben a cikkben.
GetStartupInfo
Osztály:
procedure GetStartupInfo(
var lpStartupInfo: TStartupInfo
);
Ezzel az eljárással lekérdezhetjük egy TStartupInfo struktúrába az alkalmazás indítás paramétereit az ablak méretére és pozíciójára vonatkozóan.
Paraméterek
var lpStartupInfo: TStartupInfo
Ebben a paraméterben kapjuk meg az ablak tulajdonságait. A TStartupInfo struktúra a következőképpen néz ki:
  TStartupInfo = record
    cb: DWORD;
    lpReserved: Pointer;
    lpDesktop: Pointer;
    lpTitle: Pointer;
    dwX: DWORD;
    dwY: DWORD;
    dwXSize: DWORD;
    dwYSize: DWORD;
    dwXCountChars: DWORD;
    dwYCountChars: DWORD;
    dwFillAttribute: DWORD;
    dwFlags: DWORD;
    wShowWindow: Word;
    cbReserved2: Word;
    lpReserved2: PByte;
    hStdInput: THandle;
    hStdOutput: THandle;
    hStdError: THandle;
  end;
A cb mezőben a struktúra méretét kell megadni. Az lpDesktop egy pointer egy #0 karakterrel lezárt sztringre, ami a Desktop nevét tartalmazza. Ezt az értéket csak Windows NT/XP/2000 alatt kapjuk meg. Az lpTitle szintén egy sztringre mutató pointer, amely sztring a konzol alkalmazások fejlécben megjelenő címét tartalmazza.
A dwX és dwY mezők az ablak bal-felső sarkának koordinátáit tartalmazzák. Ezek az értékek csak akkor érvényesek, ha a dwFlags mezőben a STARTF_USEPOSITION flag be van állítva.
A dwXSize és dwYSize az ablak vízszintes és függőleges méretét tartalmazzák, de csak akkor számítanak, ha STARTF_USESIZE flag meg van adva a dwFlags mezőben.
Konzol alkalmazásoknál Windows NT/XP/2000 alatt a képernyő buffer szélességét és magasságát a dwXCountChars és dwYCountChars mezőkben találjuk meg.
A dwFlags mezőben különböző flag-eket adhatunk meg, amelyekkel meghatározhatjuk, hogy melyik mezők tartalmaznak olyan adatokat, amelyek az indításkor figyelembe lettek véve, illetve egyéb opciókat. A flag-eket konstansok segítségével azonosíthatjuk, ezek a konstansok a következők lehetnek:
  • STARTF_USESHOWWINDOW: ha nincs megadva, akkor a wShowWindow mező értéke figyelmen kívül marad;
  • STARTF_USESIZE: ha nincs megadva, akkor a dwXSize és dwYSize mezők értéke nincs figyelembe véve;
  • STARTF_USEPOSITION: ha nincs megadva, akkor a dwX és dwY mezők értéke figyelmen kívül marad;
  • STARTF_USECOUNTCHARS: ha nincs megadva, akkor a dwXCountChars és dwYCountChars mezők értéke figyelmen kívül marad;
  • STARTF_USEFILLATTRIBUTE: ha nincs megadva, akkor a dwFillAttribute mező értéke figyelmen kívül marad;
  • STARTF_RUNFULLSCREEN: konzolalkalmazásoknál WIndows NT/XP/2000 alatt ez a flag határozza meg azt, hogy az alkalmazás teljes képernyőn induljon el, és ne ablakban;
A wShowWindow mezőben az ablak megjelenítésének módját határozza meg. A ShowWindow függvénynél használható konstansokat használhatjuk (SW_...).
A standard input azonosítóját a hStdInput mezőben kapjuk meg, ha a STARTF_USESTDHANDLES flag be van állítva. A hStdoutput a standard output azonosítója.
A standard hibakezelő azonosítóját a hStdError mezőben kapjuk meg, ha a STARTF_USESTDHANDLES flag meg van adva.