如题:

解决方案 »

  1.   

    var
      st:integer;
       st:= GetWindowLong(hd ,GWL_EXSTYLE); //hd为windows的handle
       st:=st or WS_EX_TOOLWINDOW;
       SetWindowLong(hd,GWL_EXSTYLE,st);
       ShowWindow(hd,SW_HIDE);
      

  2.   

    程序没有关闭,只是被隐藏了,你还是可以通过程序用
    ShowWindow(hd,SW_SHOW);将它显示出来
    -----很多hack程序都是通过这种方法隐藏的---------------
      

  3.   

    这个类似于托盘的,把窗体置为visible:=false
    然后点击托盘时置为true,你可以在网上找一下关于托盘程序实现的,有很多。
    主要是调用了api。
      

  4.   

    给你粘一段代码:
      实战演练:  一.新建一个应用程序:File->New Applicaton 在Interface部分定义一个消息常量:const WM_NID=WM_USER+1000; 系统规定从WM_USER开始为用户自定义消息。  二.定义一个全局变量: NotifyIcon:TNotifyIconData  三.双击主窗体,进入FormCreate的代码区域:TForm1.FormCreate(Sender:TObject);Begin//NotifyIcon为全局变量,在程序的开头已经定义了 
    with NotifyIcon dobegincbSize:=SizeOf(TNotifyIconData);Wnd:=Handle; //指向当前窗体Form1的句柄uID:=1;uFlags:=NIM_ICON or NIM_MESSAGE or NIM_TIP;uCallBackMessage:=WM_NID;hIcon:=Application.Icon.Handle;szTip:='dd';end;.//把设置好的变量NotifyIcon加入到系统中以便处理Shell_NotifyIcon(NIM_ADD,@NotifyIcon);End;
      四.接下来就是定义一个消息处理函数:系统给窗体发来了一个消息,就由下面这个函数来处理。每个消息处理函数都是处理某一类消息的,大家仔细地看看下面函数体的定义和一般的函数定义有什么不一样:消息处理函数要在后面加上消息的名称,这样当系统发来WM_NID消息时,就是自动触发WMNID消息处理函数。procedure WMNID(var msg:TMessage);message WM_NID;begincase msg.LParam ofWM_LBUTTONUp; Form1.Visible:=not Form1.Visible;WM_RBUTTONUP: ShowMessage(‘您点击的是右键’);End;End;  
    TForm1.FormDestroy(Sender:TObject);BeginShell_NotifyIcon(NIM_DELETE,@NotifyIcon);End;  
      

  5.   

    这个简单,直须注册个热键控制程序的显示与否,首先在工程文件中这样写
      Application.Initialize;
      Application.ShowMainForm:=False;//不显示主窗体
      
      Application.Run;
    在主窗体中注册热键,如下一个模版。。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        HKeyID:ATOM;//热键标识
        procedure HotKeyMSG(var Msg:TMessage);message WM_HOTKEY;//捕捉热键消息
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      HKeyID:=GlobalAddAtom(PChar(Application.ExeName));//获得唯一热键标识
      RegisterHotKey(Handle,HKeyID,MOD_ALT or MOD_CONTROL,Ord('Y'));//注册热键标识
      //Ctrl+Alt+Y
    end;procedure TForm1.HotKeyMSG(var Msg: TMessage);
    begin
      if Msg.WParam = HKeyID then
      begin
        if Self.Showing then//如果正显示则隐藏
          Hide
        else
          Show;
      end;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      //清理工作
      UnregisterHotKey(Handle,HKeyID);
      GlobalDeleteAtom(HKeyID);
    end;end.