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)也不能截取。