Tehnika Krstarice > Programiranje > Delphi - Obezbedite se od slučajnog Shut Down-a

Delphi - Obezbedite se od slučajnog Shut Down-a

27.03.2001.

Kada pravite komercijalne softverske proizvode, zbog očuvanja podataka klijenata, morate u svoje aplikacije ugraditi i zaštitne procedure. Jedna od njih je i prevencija u slučaju Shut Down-a (isključivanja) kompjutera. Naime, korisnik može da krene u proceduru "spuštanja" operativnog sistema, a da nije zatvorio korisničku aplikaciju. Da bi ovo izbegli možete ugraditi proceduru koja će ovo da preduhitri. Kada Windows krene u "spuštanje", on šalje poruku WM_QueryEndSession, svim otvorenim aplikacijama. Da bi detektovali (i sprečili izlaz), moraćete kreirati proceduru za obradu ove poruke.

Sledeću definiciju postavite u Private sekciju glavne forme:

procedure WMQueryEndSession
          (var Msg : TWMQueryEndSession);
          message WM_QueryEndSession;

Takođe, da bi izbegli Windows-ov Shut Down, ubacite sledeći metod u implementacionu sekciju unit-a:

procedure TForm1.WMQueryEndSession
     (var Msg : TWMQueryEndSession);
begin
if MessageDlg('Spustanje Windows-a?',
              mtConfirmation,
              [mbYes,mbNo], 0) = mrNo then
  Msg.Result := 0
else
  Msg.Result := 1;
end;

A da bi detektovali Windows Shutdown, moramo "uhvatiti" poruku WM_QueryEndSession. Prvo deklarišite proceduru za obradu poruke u Private sekciji forme:

Procedure WMEndSession
          (var Msg : TWMEndSession);
          message WM_ENDSESSION;

I na kraju dodajte samu proceduru koja obrađuje "izlaznu" poruku, u sekciju Implementation:

  procedure TForm1.WMEndSession
          (var Msg : TWMEndSession);
begin
if Msg.EndSession = TRUE then
  ShowMessage('Windows ide u shut down proceduru! ' + #10#13
              + 'at ' +  FormatDateTime('c', Now));
  inherited;
end;

Preporučite ovaj članak

Članak još uvek nije ocenjen.