type
TMainForm = class(TForm)
procedure FormCreate(Sender: TObject) ;
procedure FormDestroy(Sender: TObject) ;
private
function AppHook(var msg: TMessage): boolean;
end;
implementation
procedure TMainForm.FormCreate(Sender: TObject) ;
begin
Application.HookMainWindow(AppHook) ;
end;
function TMainForm.AppHook(var msg: TMessage): boolean;
begin
result := false;
if (msg.Msg = WM_SYSCOMMAND) and (msg.WParam = SC_RESTORE) then
result := MessageDlg('Are you an Admin?', mtWarning, mbYesNo, 0) = mrNo;
end;
procedure TMainForm.FormDestroy(Sender: TObject) ;
begin
Application.UnhookMainWindow(AppHook) ;
end;
type
TMainForm = class(TForm)
procedure FormCreate(Sender: TObject) ;
procedure FormDestroy(Sender: TObject) ;
private
function AppHook(var msg: TMessage): boolean;
end;
implementation
procedure TMainForm.FormCreate(Sender: TObject) ;
begin
Application.HookMainWindow(AppHook) ;
end;
function TMainForm.AppHook(var msg: TMessage): boolean;
begin
result := false;
if (msg.Msg = WM_SYSCOMMAND) and (msg.WParam = SC_RESTORE) then
result := MessageDlg('Are you an Admin?', mtWarning, mbYesNo, 0) = mrNo;
end;
procedure TMainForm.FormDestroy(Sender: TObject) ;
begin
Application.UnhookMainWindow(AppHook) ;
end;
重载WndProc不能截取SC_RESTORE,用自定义消息(WM_SYSCOMMAND)也不能截取。