不在任务栏中显示:
application.showmainform:=false;
不在任务列表中出现:
const
  RSP_SIMPLE_SERVICE     = $00000001;
  RSP_UNREGISTER_SERVICE = $00000000;
function RegisterServiceProcess(dwProcessId, dwServiceType: DWord): Bool; stdcall;
// Place in "implementation" session
function RegisterServiceProcess; external 'Kernel32.dll' Name 'RegisterServiceProcess';
 Example: 
   RegisterServiceProcess(0, RSP_SIMPLE_SERVICE);
   RegisterServiceProcess(0, RSP_UNREGISTER_SERVICE);       

解决方案 »

  1.   

    选project 的view source
      然后见上
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    function RegisterServiceProcess(dwProcessId, dwServiceType: DWord): Bool; stdcall;var
      Form1: TForm1;implementation
    const
      RSP_SIMPLE_SERVICE    = $00000001;
      RSP_UNREGISTER_SERVICE = $00000000;
    Function RegisterServiceProcess; external 'Kernel32.dll' Name 'RegisterServiceProcess';{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    RegisterServiceProcess(0, RSP_SIMPLE_SERVICE);//不出现在任务列表中
    //RegisterServiceProcess(0, RSP_UNREGISTER_SERVICE);用于恢复可写在其它事件中
    SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);// 不在任务栏中显示end;end.至于自动隐藏吗?
    把主窗体的WindowsState属性设为 sMinimized 就解决了
      

  3.   

    让程序不在任务栏中显示的方法优劣谈
    1、在form的oncreate事件里写入代码:
    SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    2、在project的源码里写入代码:
    application.showmainform:=false; 
    以上两种方法只要选一就可以实现不在任务栏中显示的目的。第二种方法还会不显示主窗体,所以适合编写后台监控、服务程序。第一种方法如果想隐藏窗体,用form.hide;窗体都会闪一下然后再消失,会让用户感觉到已经执行了程序,且隐藏窗体的代码不能写在oncreate事件里,需要用其他方法。我用的是增加一个timer控件,将它的interval属性改得很小如1,在它的timer事件里写入form1.hide;timer1.enabled:=false;最小化是不能隐藏窗体的。不在任务列表中显示的代码没有任何疑意。