我编写了一个托盘程序,现在想在程序运行时把窗体隐藏起来,并且不出现在Windows的任务栏中,当双击托盘图标时显示窗体,应该怎样实现??
谢谢各位高手。

解决方案 »

  1.   

    你下一个lmd控件包,里面有个系统托盘控件.
      

  2.   

    有个api函数可以写的了 ,我真的不记得了,好像是system******什么,你去看看帮助。
    const
      RSPSIMPLESERVICE     = 1;
      RSPUNREGISTERSERVICE = 0; 
    function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord;stdcall; external 'KERNEL32.DLL';procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterServiceProcess(GetCurrentProcessID, RSPSIMPLESERVICE);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
       RegisterServiceProcess (GetCurrentProcessID, RSPUNREGISTERSERVICE);
    end;
    可以在热键内隐藏进程!!但是可能你不需要。那就保留吧。
      

  3.   

    那是隐藏进程的代码,对不起,不是你需要的。
    application.showmainform:=false;
      

  4.   

    form1.show;这个是显示
    隐藏我再找找
      

  5.   

    开始时隐藏可以在Project1.dpr中加入一下语句
    Application.ShowMainForm:=False;
    Application.CreateForm(TForm1,Form1);
    ....................
    ShowWindow(Application.Handle,SW_HIDE);
    显示则相反.................
      

  6.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      showwindow(application.handle,sw_hide);
      setwindowlong(application.handle,gwl_exstyle,
      getwindowlong(application.handle,gwl_exstyle)
      or ws_ex_toolwindow and not ws_ex_appwindow);
    end;
    有了以上代码,最小化以后,在任务栏就看不到了。自己试试吧
      

  7.   

    我以前用过,一句话
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      showwindow(application.handle,sw_hide);
    end;
      

  8.   

    showwindow(application.handle,sw_hide);

    setwindowlong(application.handle,gwl_exstyle,getwindowlong(application.handle,gwl_exstyle)  or ws_ex_toolwindow and not ws_ex_appwindow);
      

  9.   

    在onshow和oncreate事件中都要加:ShowWindow(Application.Handle,SW_HIDE);
    才可以,不然第二次让它show的时候状态栏里又有了
      

  10.   

    1.想在程序运行时把窗体隐藏起来,并且不出现在Windows的任务栏中:self.hide;
    2.双击托盘图标时显示窗体(这里假设你已经将ntida.uCallbackMessage := MYmsg;(ntida是TNotifyIcondata类型,用于在托盘区加图标用的数据结构);const
    mymsg = wm_user + 100; //自定义消息,用于处理用户在图标上点击鼠标的事件
    iid = 100; //用户自定义数值,在TnotifyIconData类型全局变量ntida中使用
    type
    TForm1 = class(TForm)
    ......
    private
    //自定义消息处理函数,处理鼠标点击图标事件
    procedure onmymsg(var message: tmessage); message mymsg;
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    ntida: TNotifyIcondata;
    //用于增加和删除系统状态图标
    implementation
    {$R .DFM}
    procedure TForm1.Onmymsg(var message: tmessage);
    begin
    if message.LParam = WM_LBUTTONDBLCLK then begin//如果双击显示窗口
    //显示应用程序窗口
    ShowWindow(Handle, SW_SHOW);
    //在任务栏上显示应用程序窗口
    ShowWindow(Application.handle, SW_SHOW);
    SetWindowLong(Application.Handle, GWL_EXSTYLE,
    not (GetWindowLong(Application.handle, GWL_EXSTYLE)
    or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW));
    end;
    message.Result := 0;
    end
      

  11.   

    在工程文件的
    Application.Run;
    前面加上
    Application.ShowMainForm:=False;