我印象中是
ShowWindow(Application.Handle,SW_HIDE);
试试行不?

解决方案 »

  1.   

    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
        try
        {
            Application->Initialize();
            Application->CreateForm(__classid(TForm1), &Form1);
            Application->ShowMainForm = false;
            ShowWindow(Application->Handle, SW_HIDE);//这一句
            Application->Run();
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
        return 0;
    }
    这是bcb的程序,我不知道有标志的那一句在delphi应该放在那里,不过意思是一样的
      

  2.   

    不行,试过了。我还试过用另一个form来做Main Form,然后用一个TrayIcon的控件,先把Main Form在程序开始启动的时候就隐藏,这个时候那个TaskBar的按钮的确没了,但当我想显示另一个窗口(不是主窗口)的时候,任务条上又出现了那个和程序相关联的按钮。
      

  3.   

    在FormOnCreat中加入
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    就行了
    呵呵wjzhuang(爱吃醋的程序猪)兄 
    Application.ShowMainForm = false;
    把窗体都隐藏了,他好像不是这个意思
            
      

  4.   

    aningstar兄,你的方法我也试过了。555555555,我也不知道为什么不行,MSDN上写着设置WS_EX_TOOLWINDOW标志的时候,Delphi窗口的TaskBar按钮就会消失,但不行啊。大家也可以试试,如果新建一个任务,并在Form的BorderStyle选bsSizeable,这个时候在任务条上照样会出现窗口按钮,但MSDN上说是不会出现的!晕!!!! @_@!
      

  5.   

    Delphi的每一个应用程序都有一个TApplication类的隐藏的窗体在运行,名字与你的应用程序的可执行文件一样。Delphi在这里封装了很多消息和错误的处理。就是说用New Application新建出来一个新的应用程序都有两个窗体。所以要用Api来隐藏的话,需要对主窗体来操作。还好,Borland提供了一个方法:
    program Project1;
    ......
    begin
    Application.Initialize;
    Application.ShowMainForm := False;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
    end.
      

  6.   

    我刚解决了这个问题。
    用过SetwindowLong api是对的加上 WS_EX_TOOLWINDOW 
    关键的是用application.handle而不是form1.handle.
      

  7.   

    不会吧!
    我的怎么行!
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    end;
      

  8.   

    如果不是山穷水尽,我也不会来麻烦大家啦。我先说说我的程序吧,我想做成和OICQ的界面差不多的样子。我先建一个form,然后
        SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
        self.Width :=self.Width+1;
        self.Width :=self.Width-1;
    把这个form的标题条去除,成为一个可以改变窗口大小,但没有标题条的窗体。然后就加入一个TrayIcon控件,用的是CoolTrayIcon(这个控件应该很多人用吧?做得不错),打算在StatusBar里显示一个图标,这个时候我发现TaskBar里出现程序的按钮,我想除去,但试过在程序初始化,窗体create的事件里加入SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);之类的函数,从而删除那个按钮,但都不成功。我是完全按照MSDN上写的去做了,但都不行。
      

  9.   

    天啊,我从新建一个项目,然后
        SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
        SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
        self.Width :=self.Width+1;
        self.Width :=self.Width-1;
    这样就可以,但我已有的程序为什么就不行呢?怪!多谢大家了。起码现在我的思路清淅一点,呵呵。我想这破东西想半天了。
      

  10.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    SetWindowLong(Self.Handle,GWL_STYLE,WS_THICKFRAME);
        self.Width :=self.Width+1;
        self.Width :=self.Width-1;end;
    这样在任务栏就不会出现按钮(我没有用TrayIcon控件)
    如果还有问题,你先把TrayIcon控件去掉
      

  11.   

    现在看来是TrayIcon的事
    试着自己写一下吧!
      

  12.   

    现在问题已经解决,不过我怎么想也不知道为什么原因的不行。由于我的能给的分不多,所以就全给aningstar啦,哈哈。