通过下面代码已经可以实现程序运行时不显示窗口,但在状态栏还可以看到,请问如何才能隐藏?
    begin
      Application.Minimize;
      Application.ProcessMessages;
    end;

解决方案 »

  1.   

    处理WM_SYSCOMMAND消息,隐藏窗体。或者使用TrayIcon控件,最小化到右下角。procedure Proc(var Msg:TMessage);message WM_SYSCOMMAND;procedure TForm1.Proc(var Msg: TMessage);
    begin
      if Msg.WParam=SC_MINIMIZE then
        begin
          Application.Minimize ;
          ShowWindow(Application.Handle,SW_HIDE);
        end
      else inherited;
    end;
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务栏图标
    end;
      

  3.   

    谢谢楼上的老师。我是这样的,在程序启动时,要作出一个判断,如果条件为true,就隐藏窗体,也不让在状态栏显示;如果条件为false,则正常显示窗体运行。procedure TForm1.FormCreate(Sender: TObject);
    begin
      ....
      if MYTJ=true then
        begin
          Application.Minimize;
          Application.ProcessMessages;
        end;
    end;用上面代码,可以不显示窗体,但状态栏还是看到图标,我想什么都不显示,请问该如何做?
      

  4.   

    如果是仅仅是在隐藏主窗体的时候任务栏不显示的话,用Hide即可如果是主窗体显示的时候任务栏也不显示的话,在窗体创建的时候用SetWindowLong
      

  5.   

    我试了 
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务栏图标
    还是不行,电脑下面还是显示图标
      

  6.   

    如果是仅仅是在隐藏主窗体的时候任务栏不显示的话,用Hide即可麻烦您把具体代码写上来,好吗?谢谢
      

  7.   

    在Form的OnCreate里不能用Hide,你的判断放在Project文件里,决定是否创建窗体
      

  8.   

    你试一下改成这样:
      SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW);
      Application.Minimize;
      

  9.   

    procedure TFrmMain.FormShow(Sender: TObject);
    begin
      setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow);//不显示在系统栏
    end;
      

  10.   

    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    type
      TForm1 = class(TForm)
      procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;implementation
    {$R *.dfm}
    procedure TForm1.FormShow(Sender: TObject);
    begin
      setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow);//不显示在系统栏
    end;
    end.或者:
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    type
      TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    implementation
    {$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW);
      Application.Minimize;
    end;
    end.上面二个都不能实现隐藏
      

  11.   

    经测试,如果在窗体中放一个按钮,加一段代码:procedure TForm1.Button1Click(Sender: TObject);
    begin
      Application.Minimize;
      setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow)
    end;点击按钮可以实现隐藏窗体的目的。请问:我如何才能在启动程序时就实现这个要求?
      

  12.   

    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.ShowMainForm := False;
      Application.Run;
    end.
      

  13.   

    非常感谢小虫,问题解决。Application.ShowMainForm := False;就这一句,OK,谢谢!