在win2000下,怎么让程序不出现在程序列表中啊?就是Ctrl+Del+Alt时,看不到这个进程。

解决方案 »

  1.   

    可以把程序做成服务进程,包含在Service里,就看不到了
      

  2.   

    果你不想自己的程序被从Ctrl+Alt+Del弹出的窗口中强行关闭,介绍一个Windows未公布的API函数给你:RegisterServiceProcess(ProcessID:Long,Type:Long)该函数存在于Kernel32.dll中.Process指向进程的ID,Type表示是否向系统注册该进程,是1,否0./////////////////////////////////////////////////////////////////////////////function RegisterServiceProcess(a:longint;const b:longint):dword;stdcall;far;external 'Kernel32.dll' name 'RegisterServiceProcess';ddd:=GetCurrentProcessId;if (RegisterServiceProcess(ddd,1)=0) thenshowmessage('error!');////////////////////////////////////////////////////////////////////////////用未公开函数RegisterServiceProcess#define RSP_SIMPLE_SERVICE 1#define RSP_UNREGISTER_SERVICE 0//下面代码为隐藏DWORD dwID,redserv;dwID = GetCurrentProcessId();regserv = RegisterServiceProcess(pid,RSP_SIMPLE_SERVICE);//恢复隐藏dwID= GetCurrentProcessId()regserv = RegisterServiceProcess(pid,RSP_UNREGISTER_SERVICE); 
     
      

  3.   

    后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管理员可以通过热键调出隐藏的运行界面。要作到这些,必须把当前进程变为一个系统服务,并且定义全局热键。  一、把当前进程变为一个系统服务:   目的是在任务列表中把程序隐藏起来。调用API函数RegisterServiceProcess实现。   二、定义全局热键(本例中定义热键Ctrl+Del+R),步骤:   1、定义捕获Windows消息WM_HOTKEY的钩子函数,即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;   2、向Windows加入一个全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄。   3、向Windows登记热键:调用API函数RegisterHotKey实现。   三、源程序: unit Unit1; 
    interface 
    uses 
    Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; 
    type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    Button2: TButton; 
    procedure FormCreate(Sender: TObject); 
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    procedure FormClose(Sender: TObject; var Action: TCloseAction); 
    private 
    {热键标识ID} 
    id: Integer; 
    procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; 
    { Privat-Declarations} 
    public 
    { Public-Declarations} 
    end; 
    var 
    Form1 : TForm1; 
    implementation 
    const RSP_SIMPLE_SERVICE=1; 
    function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’; 
    {$R *.DFM} {捕获热键消息} 
    procedure TForm1.WMHotKey (var Msg : TWMHotKey); 
    begin 
    if msg.HotKey = id then 
    ShowMessage(’Ctrl+Alt+R键被按下!’); 
    form1.Visible :=true; 
    end; procedure TForm1.FormCreate(Sender: TObject); 
    Const 
    {ALT、CTRL和R键的虚拟键值} 
    MOD_ALT = 1; 
    MOD_CONTROL = 2; 
    VK_R = 82; 
    begin 
    {首先判断程序是否已经运行} 
    if GlobalFindAtom(’MyHotkey’) = 0 then 
    begin 
    {注册全局热键Ctrl + Alt + R} 
    id:=GlobalAddAtom(’MyHotkey’); 
    RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R); 
    end 
    else 
    halt; 
    end; 
       {把当前进程变为一个系统服务,从而在任务列表中把程序隐藏起来} 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE); 
    form1.Hide; 
    end; procedure TForm1.Button2Click(Sender: TObject); 
    begin 
    close; 
    end; 
    {退出时释放全局热键} 
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
    begin 
    UnRegisterHotKey(handle,id); 
    GlobalDeleteAtom(id); 
    end; 
    end. 
       四、说明:   在后台监控软件中使用以上功能,可真正实现隐蔽运行,热键调出,便于管理员进行管理。程序在Win98,Delphi5.0中运行通过。