我如何捕获在任务栏上单击窗口按钮所产生的最小化的事件?

解决方案 »

  1.   

    最简单是放一个APPLICATIONEVENTS;这个是点最小化按钮应该是一样的效果;
      

  2.   

    拦截WM_SYSCOMMAND消息:procedure TFrmMain.WMSysCommand(var msg: TMessage);message WM_SYSCOMMAND;
    begin
      if msg.WParam = SC_MINIMIZE then
        Self.WindowState := wsMinimized
      else
       inherited;
    end;
      

  3.   

    拦WMSysCommand消息 判断WParam 参数
    或者直接拦WS_MINIMIZE
    procedure TFrmMain.WSMinimize(var msg: TMessage);message WS_MINIMIZE
    begin
        if msg.Message=WS_MINIMIZE then
              do....
    end;
      

  4.   

    用无天的方法拦不到
    用西周生的方法编译的时候报错:Illegal message method index
      

  5.   

    另外我已经能拦截到点击窗口的最小化按钮的事件(看例子,不是自己会),但是拦不到我说的这种,但是看金山词霸和FLASHGET都可以实现那种功能。
    最明显的实验就是,大家(我的实验程序,金山词霸和FLASHGET)都点最小化按牛都可以正常的缩到系统时钟的TRAYICON区域,但是如果点“显示桌面”我的程序就不会缩到TRAYICON区域而是正常的最小化到了系统的任务栏上,就象普通的程序点最小化按钮那样,而那两个程序同样可以缩到TRAYICON区域。
    还请各位前辈多多指点!!!
      

  6.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMinimize := minisize;
    end;procedure TForm1.minisize(Sender: TObject);
    begin
      sndPlaySound('ding.wav', SND_ASYNC);
    end;满意吗?
      

  7.   

    我如何捕获在任务栏上单击窗口按钮所产生的最小化的事件?------------------
    单击窗口按钮---应该是---单击“显示窗口”按钮吧?
    误解了!拦截WM_SHOWWINDOW消息,如果lParam = SW_SHOWMINNOACTIVE,单击“显示窗口”按钮产生的消息,试试吧