防止關閉windows (轉)

worldblog發表於2007-12-15
防止關閉windows (轉)[@more@]

  有時候在執行當中,不允許別的程式或人為的關閉,除非應用程式知道將要退出,其實這樣很簡單,我們都知道將要關閉時,會向每一個程式傳送WM_QUERYENDSESSION這條關機訊息,只要我們的程式接受到此訊息後,做恰當的處理即刻完成我們所需要的。

  處理windows訊息有好幾種,在這裡我們利用Application的OnMessage事件,建立響應該事件的過程即可!如下面的例子:
unit unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
  private
  { Private declarations }
  public
  procedure AppMessageHandler(var Msg:TMsg; var Handled:Boolean);//宣告系統處理訊息過程,響應Application的OnMessage事件的過程必須為TMessageEvent型別;
  { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AppMessageHandler(var Msg:TMsg; var Handled:Boolean);
begin
  if Msg.message=WM_QueryEndSession then//如果收到的訊息為關閉計算機的訊息時,進行特別處理,因為只是一個例子,我只寫出彈出對話方塊,大家可以根據自己程式的需要進行響應的處理;
  begin
  if messagedlg('shutdown?',mtconfirmation,mbyesnocancel,0)= mryes then
  Handled:=true
  else
  Handled:=false;
  end;
end;
end.
最後在程式的DPR中,建立窗體之後但在Application.Run前加入
Application.OnMessage:=Form1.AppMessageHandler;即可!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993657/,如需轉載,請註明出處,否則將追究法律責任。

相關文章