SetWindowLong(Application.Handle GWL_EXSTYLE WS_EX_TOOLWINDOW);为什么还是会在任务栏中显示出来啊。我用的是delphi6.0 win2K下。要怎么才能让程序不出现在任务栏上,

解决方案 »

  1.   

    你把上面的代码放在FormCreate事件中就可以实现了若要在其他事件中处理,可以使用以下代码
    Application.minimize;
    ShowWindow(Application.Handle ,SW_HIDE);
    就可实现
      

  2.   

    你把上面的代码放在FormCreate事件中就可以实现了
    但是在进程里还是会显示出来
      

  3.   

    捕捉WM_SYSCOMMAND 就可以了
    procedure TrayIcon(var msg : TWMSYSCOMMAND); Message WM_SYSCOMMAND;procedure Form1.TrayIcon(var msg : TWMSYSCOMMAND); Message WM_SYSCOMMAND;
    begin
      case msg of 
        SC_MINIMIZE : Application.visible := false;
      else
        inherited;
      end;
    end;  
      

  4.   

    更正
    procedure Form1.TrayIcon(var msg : TWMSYSCOMMAND); Message WM_SYSCOMMAND;
    begin
      case msg.wparam of 
        SC_MINIMIZE : Application.visible := false;
      else
        inherited;
      end;
    end;
      

  5.   

    怎么不行啊!
    好像Application没有Visible属性吧!
      

  6.   

    procedure TForm1.FormCreate(sender:TObject);
    begin
      SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    end;
      

  7.   

    写错了,是把主窗口的Visible设为false;
      

  8.   

    Var
      WndHandle: THandle;
      WndClass: array[0..50] of char;
    begin
      StrPCopy(@WndClass[0], 'Shell_TrayWnd');
      WndHandle := FindWindow(@WndClass[0], nil);
      ShowWindow(WndHandle, SW_HIDE);
    end;
      

  9.   

    procedure TForm1.FormCreate(sender:TObject);
    begin
      SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    end;
    是application.handle
    还是application,handle
    ?????
      

  10.   

    procedure TForm1.FormCreate(sender:TObject);
    begin
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    end;
    是application.handle