请问,如何在win98中按ctrl+alt+delete不出现我的程序!谢谢!(100分)

  • 主题发起人 主题发起人 sztsg
  • 开始时间 开始时间
S

sztsg

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,如何在win98中按ctrl+alt+delete不出现我的程序!谢谢!
 
全文检索,
http://www.delphibbs.com/delphibbs/dispq.asp?lid=246301
 
为了让程序用ALT+DEL+CTRL看不见,在implementation后添加声明:
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';
再在上面的窗口Create事件加上一句:RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏
注意:如果系统为NT,应该改用把自己挂到别的进程里面实现真正的隐藏.这样一来用进程查看器也无法发现其进程.具体可以参考BO2K的代码.如果你还是要用上面的方法,那么可以这样:
function My_SelfHide: Boolean;
type
TRegisterServiceProcess = function(dwProcessID, dwType: DWord): DWORD; stdcall;
var
hNdl: THandle;
RegisterServiceProcess: TRegisterServiceProcess;
begin
Result := False;
if Win32Platform <> VER_PLATFORM_WIN32_NT then //不是NT
begin
hNdl := LoadLibrary('KERNEL32.DLL');
RegisterServiceProcess := GetProcAddress(hNdl, 'RegisterServiceProcess');
RegisterServiceProcess(GetCurrentProcessID, 1);
FreeLibrary(hNdl);
Result := True;
end
else
Exit;
end;
 
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external 'KERNEL32.DLL';

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,0);
end;
 
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;stdcall;external 'KERNEL32.DLL';

RegisterServiceProcess(GetCurrentProcessID, 1); //ctrl alt del 不显示
RegisterServiceProcess(GetCurrentProcessID, 0); //ctrl alt del 显示
 
RegisterServiceProcess这个函数只在98下有效啊,怎么样在2000下实现这样的功能?
 
2000下一般来说是用dll来实现的。具体方法我记得asm.yeah.net上有。可以参考一下。
 
后退
顶部