Delphi - Számítógép üresjárati idejének figyelése

forráskód letöltése
A mellékelt példában azt valósítjuk meg, hogy programból figyeljük, hogy a felhasználó végez-e érdemi munkát a számítógéppel, vagy hozzá se nyúl. Ha az utóbbi eset áll fenn, akkor programunk egy jelszó bekérő ablakot jelenít meg és a jelszó megadásáig nem ad lehetőséget a további használatra. Mivel felhasználói aktivitás már jó ideje nem történt, így feltételezhetjük, hogy a felhasználónk akár már nem is ül a gép előtt, ekkor viszont ajánlatos lehet némi védelem bizonyos esetekben. A feladat megoldásához a rendszer képernyővédőjét, vagyis a WM_SYSCOMMAND eseményt használjuk fel. A példa persze feltételezi, hogy a képernyővédő aktív a gépen és egy adott idő után elindul, ha nincs aktivitás.
procedure WMSysCommand(var Msg:TMessage); message WM_SYSCOMMAND;
Ha az Msg paraméter lParam mezőjének értéke SC_SCREENSAVE, akkor ez azt jelenti, hogy a képernyővédő alkalmazás elindult. Ebben az esetben nincs más dolgunk, mint megjeleníteni a jelszót kérdező dialógus ablakunkat, és várni, amíg meg nem adják újra a belépéshez szükséges jelszót. Fontos, hogy mielőtt a dialógus ablakot ShowModal-al megjelenítenénk, adjuk ki az inherited utasítást, különben a képernyővédő nem indul el, csak miután az eljárás befejeződött!
procedure TForm1.WMSysCommand;
begin
  inherited;
  if Msg.wParam=SC_SCREENSAVE then Form2.ShowModal;
end;