这样处理:  
private
    { Private declarations }
procedure OnMin(var msg : TMessage);messageWM_SYSCOMMAND;procedure TForm1.OnMin(var msg: TMessage);
begin
  if msg.WParam = SC_MINIMIZE  then
    showMessage('OK');
  inherited;
end;procedure TForm1.Button1Click(Sender: TObject);begin
  SendMessage(handle,WM_SYSCOMMAND,SC_MINIMIZE,0);end;

解决方案 »

  1.   

    在Formload中写
    self.OnMinimize:=你自己的过程!
      

  2.   

    不好意思,应该写成
    Application.OnMinimize :=你自己的处理过程!
      

  3.   

    ApplicationEvents控件中有个OnMinimize事件!!
    ApplicationEvents控件在Additional标签页中!
      

  4.   

    to Caty(双鱼)
    用ApplicationEvents的OnMinimize事件时,第一次成功处理了自己的事件,但恢复窗口后就再不能最小化了,为什么啊!
      

  5.   

    最小化时我隐藏(Form1.Hide)了窗体,并在托盘区产生了一个图标,单击图标后用show重新显示该窗体,但此时已无法在最小化了,不知为什么!
      

  6.   

    参考下面代码:
    type
      TForm1 = class(TForm)
      private
        procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
        procedure WMBarIcon(var Message:TMessage);message WM_BARICON;procedure TForm1.WMSysCommand(var Message:TMessage);
    var
      lpData:PNotifyIconData;
    begin
      if Message.WParam = SC_ICON then
      begin     //如果用户最小化窗口则将窗口    隐藏并在任务栏上添加图标
        lpData := new(PNotifyIconDataA);
        lpData.cbSize := 88;       //SizeOf(PNotifyIconDataA);
        lpData.Wnd := Form1.Handle;
        lpData.hIcon := Form1.Icon.Handle;
        lpData.uCallbackMessage := WM_BARICON;
        lpData.uID :=0;
        lpData.szTip := 'Samples';
        lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
        Shell_NotifyIcon(NIM_ADD,lpData);
        dispose(lpData);
        Form1.Visible := False;
      end
      else
      begin    //如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。
        DefWindowProc(Form1.Handle,Message.Msg,Message.WParam,Message.LParam);
      end;
    end;procedure TForm1.WMBarIcon(var Message:TMessage);
    var
      lpData:PNotifyIconData;
    begin
      if (Message.LParam = WM_LBUTTONDOWN) then
      begin    //如果用户点击任务栏图标则将图标删除并回复窗口。
        lpData := new(PNotifyIconDataA);
        lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
        lpData.Wnd := Form1.Handle;
        lpData.hIcon := Form1.Icon.Handle;
        lpData.uCallbackMessage := WM_BARICON;
        lpData.uID :=0;
        lpData.szTip := 'Samples';
        lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
        Shell_NotifyIcon(NIM_DELETE,lpData);
        dispose(lpData);
        Form1.Visible := True;
      end;
    end;
    能完成你所要求的功能
      

  7.   

    PNotifyIconData;
    是什么类型 
      

  8.   

    你用系统托盘的话就不要用form的最小化,

            visible:=not visible;
            application.ShowMainForm:=visible;
            setforegroundwindow(application.handle);
    我试过最小化和托盘一起用会有点问题,请指教指教