HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

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!

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