1. 三行代码可以把程序的任务栏图标去掉
                DWORD  dwExStyle  =  GetWindowLong(HWND,  GWL_EXSTYLE);
                dwExStyle  |=  WS_EX_TOOLWINDOW;
                SetWindowLong(HWND,  GWL_EXSTYLE,  dwExStyle); 
2.  生成一个父窗口,隐藏它,然后将你要从taskbar上移除的窗口的父窗口设成这个隐藏的父窗口(如果WINVER  >  =  0x0400,还需要去掉窗口的WS_EX_APPWINDOW属性)
  
  基于对话框的app的例子:  
  CMyDialog::OnInitDialog里面添加如下调用:
  ModifyStyleEx(  WS_EX_APPWINDOW,  0  );
  
  CMyAPP::InitInstance做如下相应改动:
  --------------------------
  
  CMyDlg  dlg();
  m_pMainWnd  =  &  dlg;
  int  nResponse  =  dlg.DoModal();
  if  (nResponse  ==  IDOK)
  ...
  -----------------------改为
  CHideWindow  p;
  CTestDlg3Dlg  dlg(&  p);
  m_pMainWnd  =  &  dlg;
  int  nResponse  =  dlg.DoModal();
  if  (nResponse  ==  IDOK)
    
  
  -------------------
  class  CHideWindow  :  public  CWnd
  {
  public:
    CHideWindow()
    {
      CString  strMyClass  =  AfxRegisterWndClass(
        CS_VREDRAW  |  CS_HREDRAW,
        ::LoadCursor(  NULL,  IDC_ARROW  ),
        (HBRUSH)        ::GetStockObject(WHITE_BRUSH),
        ::LoadIcon(NULL,IDI_APPLICATION));
      
      BOOL  b  =  CreateEx(  0,  strMyClass,
        _T("HideWindow_LLY"),
        WS_SYSMENU,
        CRect(0,  0,0,0),
        NULL,  0);
    }
    ~CHideWindow()
    {
    }
  
  }; 
 

解决方案 »

  1.   

    如何从任务栏上隐藏应用程序的按纽
    用过金山词霸的朋友一定对其主窗口的工作方式很感兴趣。当它显示时,在任务栏有一个对应的按纽,而当它最小化的时候则从任务栏上消失了。如何在我们的程序中实现这一技巧呢?通过研究Delphi程序的工件方式和试验摸索,本人得出了实现这一技巧的方法。现在写出来与大家共享,希望能对大家编程有所帮助。其实本来实现这一巧很容易的,只要在窗口的最小化事件代码中加入:self.hide;就行了。但问题是 Form没有最小化事件。通过摸索,本人发现当主窗口最小化时会调用Application 对 象的OnMinimize方法。只要在自己的主窗口定义中添加一个自己的方法,再将它安装Application对象的OnMinimize方法上去就行了。要再次显示主窗口只要调用show; 方法就行了。不过要注意:一定要主窗口的OnShow事件方法中加入Application.Resore;方法调用,否则,第二次按最小化按纽的时候,程序将什么也不做。要使程序启动时不显示主窗口,只要在Project代码中加入Application.ShowMainForm:=false; 就行了。以下是程序片段,过几天本人将程序完善后会放到主页上来。
    {WinKill.Dpr}
    program WinKill;uses
    Forms,
    FMain in 'FMain.pas' {FormMain};{$R *.RES}begin
    Application.Initialize;
    Application.CreateForm(TFormMain, FormMain);
    Application.ShowMainForm:=false;//*****
    Application.OnMinimize:=FormMain.AppMinimize;//******
    Application.Run;
    end.{Unit FMain}
    .
    .
    .
    procedure TFormMain.M_ShowClick(Sender: TObject);
    begin
    self.Show;
    end;
    procedure TFormMain.AppMinimize(Sender: TObject);
    begin
    inherited;
    self.Hide;
    end;
    procedure TFormMain.FormShow(Sender: TObject);
    begin
    Application.Restore;
    //如果将这句去掉,则第二次按最小化按纽的时候,程序将什么也不做。
    end;
      

  2.   

    设置窗口属性为WS_EX_TOOLWINDOW
    DWORD style = GetWindowLong(GWL_EXSTYLE);
    style = style | WS_EX_TOOLWINDOW;
    SetWindowLong(GWL_EXSTYLE, style);
      

  3.   

    这样只能去掉icon,并不能使其不在任务栏消失!