|
|
TPower komponens, avagy az energia ellátás figyelése
|
|
Példaprogram letöltése
9806 bájt
|
Mellékelt TPower komponensnek elsősorban olyan alkalmazásoknál vehetjük nagy hasznát, melyek olyan környezetben futnak, ahol az áramellátás nem minden esetben biztosított (pl.: laptop). Ekkor a TPower komponens által, események formájában értesítést kaphat alkalmazásunk, hogy mikor változnak az áramellátási feltételek, esetleg mikor kell felkészítenünk alkalmazásunkat arra, hogy az áramellátás hamarosan megszűnik. A komponens arról is értesít bennünket, ha a felhasználó "Készenléti állapotba" (Suspend) kívánja helyezni a számítógépet.
A mellékelt példaprogram megnyitása előtt a Power.pas-ban lévő komponenst telepítenie kell a Delphi alá.
A komponens az alábbi eseményekkel rendelkezik:
OnBatteryLow - a gép akkumulátora hamarosan teljesen lemerül
OnPowerStatusChange - a gép áramellátási státusza megváltozott, például akkumulátorról áramra kapcsolt a felhasználó
OnQuerySuspend - esemény jön létre, ha a felhasználó Készenléti állapotba szeretné helyezni a gépet. Ekkor, ha a paraméterként kapott Grant nevű változónak hamis értéket adunk, akkor a készenléti állapot nem jön létre.
OnQuerySuspendFailed - üzenetet kapunk, ha a készenléti állapotra irányuló kérést valamely alkalmazás elutasította
A komponens megvalósításához a WM_POWERBROADCAST üzenetet kell felhasználnunk. Ahhoz, hogy az üzeneteket a TComponent-ből származó komponensünk is megkapja, szükséges ellátnunk azt egy ablakkezelő eljárással (WndProc).
Ezért a konstruktoránál létrehozunk egyet a komponens számára az AllocateHWnd függvény hívásával. Paraméterként azt az eljárásunkat kell megadni, mely majdan az üzeneteket dolgozza fel.
constructor TPower.Create(AOwner: TComponent);
begin
inherited;
FHWND:=AllocateHWnd(WndProc);
end;
Amit létrehozunk, azt meg is kell szüntetnünk. Ehhez a destruktort használjuk fel, ahol a DeallocateHWnd hívásával megszüntetjük a létrehozott ablakkezelő eljárásunkat.
destructor TPower.Destroy;
begin
DeallocateHWnd(FHWND);
inherited;
end;
A WndProc eljárásban egyedül a WM_POWERBROADCAST üzenetet kell figyelnünk.
Amikor ez létrejön, akkor a kapott üzenet wParam paramétere árulja el, hogy melyik esemény következett be. Ezeket a PBT_ kezdetű konstansokkal azonosíthatjuk. Az események többsége csak tájékoztató jellegű, kivéve a PBT_APMQUERYSUSPEND-et, ahol válaszolnunk kell, hogy a készenléti állapotot engedélyezi-e programunk vagy elutasítja azt. Ezt az üzenet visszatérési értékében kell tudatnunk a rendszerrel. Ha itt igaz értéket adunk vissza, akkor engedélyezzük, ha pedig szeretnénk elutasítani, akkor a BROADCAST_QUERY_DENY konstans értékét kell visszaadnunk.
...
PBT_APMQUERYSUSPEND: begin
if Assigned(FOnQuerySuspend) then begin
b:=true;
FOnQuerySuspend(Self, b);
if b then begin
msg.Result:=integer(true);
end else begin
msg.Result:=BROADCAST_QUERY_DENY;
end;
end;
end;
...
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 103. 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!
|