响应消息 WM_SIZE,如果WPARAM参数为SIZE_MINIMIZED就表示最小化了。
做法:1、在Form中加入方法:
procedure WMSize(var Msg: TWMSize); message WM_SIZE;2、实现:
procedure TForm1.WMSize(var Msg: TWMSize);
begin
  if Msg.WParam=SIZE_MINIMIZED then
    你的加到任务栏的代码  inherited; // 调用默认的处理
end;

解决方案 »

  1.   

    将代码加到
    onresize(窗体调整size时触发)
    判断窗体状态
    有三种:
    wsNormal
    wsMaximized
    wsMinimized
      

  2.   

    procedure MinimizeProc(Sender: TObject);procedure TForm1.MinimizeProc(Sender: TObject);
    begin
     ShowWindow(Application.Handle,SW_HIDEWINDOW);
    end;
    在FormCreate中加如下代码
    Application.Minimize := MinimizeProc;
      

  3.   

    方法一:截获 WM_SYSCOMMAND消息,看窗体是否处于最小化状态 
    type 
      TForm1 = class(TForm) 
      private 
         procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMM 
    AND; 
      //... 
      end; implementation {$R *.DFM} 
    procedure TForm1.WMSysCommand(var Message:TMessage); 
    begin 
      if Message.WParam = SC_ICON then  //最小化了 
      begin 
      //form1.hide; ... 
      end 
      else 
        inherited; 
    end; 方法二,直接判断是否点了窗体非客户区的最小化按钮 
    type 
      TForm1 = class(TForm) 
      private 
        procedure Minimize(var mess:TWMNCLBUTTONDOWN);message WM_NCLBUTTON 
    DOWN; 
      //... 
      end; implementation 
      

  4.   

    agui(阿贵)
    msg.wparm出不来啊,要加入什么单元吗?
      

  5.   

    procedure WMSize(var TheMsg: TMessage); message WM_SIZE;procedure TForm1.WMSize(var TheMsg: TMessage);
    begin
      if TheMsg.Msg =SIZE_MINIMIZED then
        showMessage('anjing');
      inherited;
    end;