县共青团改革方案4 1:delphi如何屏蔽任意按键..?
来源:百度文库 编辑:高考问答 时间:2024/05/05 10:53:13
或
用什么代码可以屏蔽任意按键(请列出代码出来)
可以举个例子吗..?
假如我想屏蔽Alt+Ctrl+del该如何呢
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @tmp, 0);
这一个我试了M遍了..不成功在2003系统下
用KeyHook可以屏蔽
如果没有这个控件可以去网上下载
如果你用的是正版的delphi,它在system面板里
补充:
原来你是要屏闭组合键
SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @tmp, 0);
一句话搞定
KeyHook只能屏闭单个按键
我没用过2003的,刚才在XP下写了个函数,希望对你有用
两个按钮是做测试用的,可以无视
记得用过函数后要用SHChangeNotify进行刷新
还有一点,屏蔽Ctrl+Alt+Delete的原理和屏蔽其他键不同
如果是一般的屏蔽,用SetWindowsHookEx函数就行了
unit Unit1;
interface
uses
Windows, Forms, Classes, Messages, SysUtils, Menus, shellapi, ExtCtrls,
ShlObj, Registry, Controls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure EnableCTRLALTDEL(YesNo : boolean);
const
sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
with TRegistry.Create do
try
RootKey:=HKEY_CURRENT_USER;
if OpenKey(sRegPolicies+'\System\',True) then
begin
case YesNo of
False:
begin
WriteInteger('DisableTaskMgr',1); //任务管理
WriteInteger('DisableLockWorkstation',1);//用户锁定计算机
WriteInteger('DisableChangePassword',1);//用户更改口令
end;
True:
begin
WriteInteger('DisableTaskMgr',0);
WriteInteger('DisableLockWorkstation',0);
WriteInteger('DisableChangePassword',0);
end;
end;
end;
CloseKey;
if OpenKey(sRegPolicies+'\Explorer\',True) then
begin
case YesNo of
False:
begin
WriteInteger('NoChangeStartMenu',1); //开始菜单
WriteInteger('NoClose',1); // 关闭系统菜单
WriteInteger('NoLogOff',1);//注销菜单
WriteInteger('NoRun',1);//运行菜单
WriteInteger('NoSetFolders',1);//设置菜单
end;
True:
begin
WriteInteger('NoChangeStartMenu',0);
WriteInteger('NoClose',0);
WriteInteger('NoLogOff',0);
WriteInteger('NoRun',0);
end;
end;
end;
CloseKey;
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnableCTRLALTDEL(true);//屏闭
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL); //刷新系统
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
EnableCTRLALTDEL(false);//解除屏闭
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL);
end;
end.
rarnu,der 厉害佩服,