如何在资源管理器中隐藏自己编的程序,也就是按住热启动键之后出现的资源管理器窗口中隐藏程序..(200分)

  • 主题发起人 主题发起人 D神
  • 开始时间 开始时间
98下:
用RegisterServiceProcess()来达到您的要求.
const
RSP_SIMPLE_SERVICE = $00000001;
RSP_UNREGISTER_SERVICE = $00000000;
// Parameter dwProcessId can be 0, same effect as GetCurrentProcessId
// Return Values: True(1) means success
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);
 
我在win98下没通过,我查过资料,你的函数只在win95可以实现,可是谁还用win95呢
 
Win9x:
datoncg (1999-7-8 13:14:10)
--------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);  
var tmp:integer;
begin
  tmp := 0;

  //屏蔽 Alt-Tab
  SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @tmp, 0);

  //屏蔽 Ctrl-Alt-Del
  SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @tmp, 0);  
end;
 
上面的方法2000下就不行了
 
//------------------------------------------------------------------------------
//在98下隐藏窗口,标准写法
procedure SetServiceProcess(b:Boolean);
var
RegisterServiceProcess :function (dwProcessID, dwType: DWord) : DWord; Stdcall;
DllName:string;
Buffer:array [0..127] of char;
Lib:Thandle;
begin
if fcIsNT then exit;
DllName:='KERNEL32.DLL';
strPcopy(buffer,Dllname);
Lib:=LoadLibrary(Buffer);
if Lib<>0 then
try
@RegisterServiceProcess:=GetProcAddress(Lib,'RegisterServiceProcess');
if b then
RegisterServiceProcess (GetCurrentProcessID, 1)
else
RegisterServiceProcess (GetCurrentProcessID, 0)
finally
freeLibrary(Lib);
end
else
Messagebox(0,pChar('DLL错误'),pChar('系统错误'),MB_ICONERROR);
end;
 
2000下怎么隐藏呀,告诉我,我把分都给他
 
www.playicq.com
下有hideprocess
试试
分给我了吧!
 
不行,热启动还是有目标程序
 
后退
顶部