|
|
A Windows-ból való kilépés, vagy az újraindítás eseményének figyelése
|
|
Példaprogram letöltése
5701 bájt
|
Bármilyen alkalmazásnál előfordulhat olyan eset, hogy az alkalmazásból való kilépés előtt bizonyos műveleteket el kell végezni (pl. memória felszabadítás, bufferek ürítése, stb.). Igen ám, csakhogy amikor a felhasználó valamilyen módon kilép a Windows-ból (pl. újraindítja), akkor a kilépés egy kicsit másképpen történik meg, mint egyébként, így például a destruktorok, és a Form-ok OnClose eseményei nem futnak le. A mellékelt példában azt nézzük meg, hogy miként értesülhetünk arról, hogy a Windows kilép.
Amikor a felhasználó, vagy valamilyen alkalmazás a Windows-ból való kilépésről, vagy újraindításról rendelkezik, akkor az alkalmazások a WM_QURYENDSESSION eseményt kapják. Ekkor eldönthetik, hogy engedélyezik-e a kilépést, vagy nem. Ez az esemény azonban pont emiatt nem közli az alkalmazással egyértelműen, hogy a Windows befejezi futását, csak azt, hogy be szeretné fejezni. Van azonban még egy üzenet, a WM_ENDSESSION, amit viszont már akkor kap az alkalmazás, amikor már biztos, hogy a Windows kilép. Ehhez az üzenethez kell egy eljárást készíteni, ami a szükséges feladatokat végrehajtja a program bezárása előtt.
procedure WMEndSession(var Msg: TWMEndSession); message WM_ENDSESSION;
A mellékelt példaprogramban létrehoztunk egy eljárást az OnClose eseményhez, és a Form destruktorát is felülírtuk. Így kaptunk három eljárást, amelyek mindegyike egy-egy fájlt hoz létre a program könyvtárában. Próbáljuk ki, hogy a program elindítása után egyszerűen bezárjuk azt. Ekkor először létrejön a 2.txt (OnClose esemény) és a 3.txt (destruktor) nevű fájl. Töröljük ezt a két fájlt, és indítsuk el újra a programot. Indítsuk újra a Windows-t, és láthatjuk, hogy most csak az 1.txt (WMEndSession) fájl jött létre.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 544. 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!
|