当然可以了,project里面没有窗体不就行了

解决方案 »

  1.   

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

  2.   

    从技术方面来说,一个任务栏应用程序非常象普通的应用程序,它有一个消息循环,相应Windows的消息来完成相应的功能。 Procedure RunTrayApplication; 
    Var Msg : TMsg; 
    Begin 
      CreateWindow; 
      AddTrayIcon; 
      While GetMessage(Msg,0,0,0) do Begin 
        TranslateMessage(Msg); 
        DispatchMessage(Msg); 
      End; 
      DeleteTrayIcon; 
    End; 
        你能看到:所有需要做的工作是创建一个窗口,注册一个图标到任务栏,设置它的消息循环,最后关闭它。当然,必须还有增加其他代码完成相应的功能,但是,它是真的不需要担心。     让我们从窗口的创建开始。实际上,这个窗口是不是能在任务栏上能见到的窗口。相应的,这个窗口只是处理消息循环、其它父类的工作。任务窗口(Windows 95 & NT)句柄创建消息(例如鼠标单击等)和将消息发到我们的窗口。 Procedure CreateWindow; 
    Var 
      WC : TWndClass; 
      W  : hWnd; 
    Begin 
      With WC do Begin 
        Style := 0; 
        lpfnWndProc := @WndProc; 
        cbClsExtra := 0; 
        cbWndExtra := 0; 
        hIcon := 0; 
       hCursor := 0; 
        hbrBackground := 0; 
        lpszMenuName := nil; 
        lpszClassName := 'MyTrayIconClass'; 
        hInstance := System.hInstance; 
      end; 
      RegisterClass(WC); 
      W := Windows.CreateWindow('MyTrayIconClass','MyVeryOwnTrayIconWindow', 
               ws_OverlappedWindow,0,0,0,0,0,0,hInstance,nil); 
      ShowWindow(W,sw_Hide); 
      UpdateWindow(W); 
      MainWindow := W; 
    End; 
        这个窗口使用普通的窗口函数创建。注意这个窗口的类型是“ws_OverlappedWindow”,但是这个尺寸是0,并且它是隐藏的,所有,它将不会显示出来,但是他还是有窗体的程序。