Mega Code Archive

 
Categories / Delphi / System
 

Prevent a user from closes Windows

Title: Prevent a user from closes Windows Question: Prevent a user from closes Windows Answer: When the user closes Windows having our application opened, it is possible that occur in a wrong moment (without recording data, in the middle of a process, etc). This can be avoided capturing the message that send Windows to all the applications when the user wants to close Windows: the message WM_QUERYENSESSION To capture the message and to send it to our treatment code of the message: TForm1 = class(TForm) .......... private procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION; .......... end; Simply...we must add the next line in the Private clausule od the form: procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION; and later, in the implementation, we put the treatment code of the message: procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession); begin MessageBox(Handle, 'Cierra antes el programa', nil, MB_OK); Msg.result := 0; end; If instead of aborting the close of Windows, we want that follows being accomplished, enough with which we change the Msg.result:=0 for Msg.result:=1. NOTE: The behavior of the message defers in win98 and WinNT, as soon as watches you the help of the message WM_QUERYENDSESSION.