请问如何屏蔽 ctrl+alt+del 功能?(60分)

  • 主题发起人 元无天
  • 开始时间

元无天

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如何让 用户不能通过按下 ctrl+alt+del 强行关闭程序吗?
就是说不能让 程序进程名 出现在进程列表窗体上.请给出实现代码。

先多谢各位了。
 
要使系统的热启动键(Ctrl+Alt+Del)失效,使用以下语句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);

要恢复系统的热启动键(Ctrl+Alt+Del),使用以下语句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
 
呵呵
去以往的帖子里面找一下,起码有七八次了
 
to w.th:
我想 元无天的意思可能不是这样,因为这样
就不能强行结束别的程序了。他可能是想按这三个键后,
当前程序不出现在 任务管理器中的进程。
 
病毒和蠕虫是如何实现的呢?

运用这种机制编写你的程序,即可
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

//声明windows标准动态链接调用。
function RegisterServiceProcess(dwProcessID,dwType:DWord):DWord;stdcall;external 'KERNEL32.DLL';

var
Form1: TForm1;

implementation

{$R *.dfm}

//按Ctrl+Alt+Del时不出现
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE);
end;

//按Ctrl+Alt+Del时出现
procedure TForm1.Button2Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,RSP_UNERGISTER_SERVICE);
end;

end.
 
implementation
const RSP_SIMPLE_SERVICE=1;
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’;



隐藏
RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE);
form1.Hide;
恢复
UnRegisterHotKey(handle,id);
GlobalDeleteAtom(id);


就这个了
 
以下程序我在delphi6+windows98下验证通过:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

//声明windows标准动态链接调用。

var
Form1: TForm1;

implementation
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord;
stdcall; external 'KERNEL32.DLL';

{$R *.dfm}

//按Ctrl+Alt+Del时不出现
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,1);
end;

//按Ctrl+Alt+Del时出现
procedure TForm1.Button2Click(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID,0);
end;

end.
 
多人接受答案了。
 
顶部