用鼠标点击桌面上两个不同程序的窗口来激活不同的程序。
此时TaskBar能够知道那个窗体激活了,并将该窗口的任务栏按钮陷下去。请问:Taskbar是如何知道的,它得到了什么通知,能否控制Taskbar不得到通知。

解决方案 »

  1.   

    给它发消息了procedure TForm1.Button1Click(Sender: TObject);
    var
      h: DWORD;
    begin
      h := FindWindow('Shell_TrayWnd', nil);
      h := FindWindowEx(h, 0, 'ReBarWindow32', nil);
      h := FindWindowEx(h, 0, 'MSTaskSwWClass', nil);
      h := FindWindowEx(h, 0, 'ToolbarWindow32', nil);
      SendMessage(h, TB_PRESSBUTTON, 1, MakeLong(1, 0)); 
    end;TB_PRESSBUTTON  
    wParam = (WPARAM) idButton; //任务栏中的idButton是两个两个算的,不知道是为什么,好像每个Button占用两个id
    lParam = (LPARAM) MAKELONG(fPress, 0); 如果想要禁止它得到通知,用钩子把发向它的这些消息钩掉应该就ok了
      

  2.   

    把问题变一下:
    有两个窗口PForm和CForm,它们属于不同的程序,PForm是一个全屏的窗口连任务栏也覆盖掉了。现在我用Windows.SetParent(CForm.Handle, PForm.Handle);把CForm变为PForm的子窗口,但只要我一激活CForm,任务栏就出现了。
    谁有办法点CForm时,任务栏不出现。记住PForm和CForm属于不同进程。
      

  3.   

    http://www.codeproject.com/w2k/Vanishing_Windows.asp