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

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;

Pratite Krstaricu na www.krstarica.com