屏闭NT/2000/XP/2003系统Ctrl+Alt+Del的完美解决方案
来源:百度文库 编辑:神马文学网 时间:2024/04/28 09:05:52
library SASWinHook;
{
SASWinHook
copyrights by Liu Yang LYSoft http://lysoft.7u7.net 2006.1.1
usage: only need to inject this dll to WinLogon.exe
}
uses Windows, Messages;
{$R *.res}
var
FHandle: THandle;
OldAppProc: Pointer;
function HookProc(hHandle: THandle; uMsg: Cardinal;
wParam, lParam: Integer): LRESULT; stdcall;
var K, C: Word; // wndproc
begin
if uMsg = WM_HOTKEY then
begin
K := HIWORD(lParam);
C := LOWORD(lParam);
// press Ctrl + Alt + Del
if (C and VK_CONTROL<>0) and (C and VK_MENU <>0) and ( K = VK_DELETE)
then Exit; // disable Ctrl + Alt + Del
end;
Result := CallWindowProc(OldAppProc, hHandle,
uMsg, wParam, lParam);
end;
procedure EntryPointProc(Reason: Integer);
begin
case reason of
DLL_PROCESS_ATTACH:
begin // hook SAS window wndproc
FHandle := FindWindow(‘SAS window class‘, ‘SAS window‘);
if not IsWindow(FHandle) then Exit; // is window found?
// save old wndproc
OldAppProc := Pointer(GetWindowLong(FHandle, GWL_WNDPROC));
// set new wndproc
SetWindowLong(FHandle, GWL_WNDPROC, Cardinal(@HookProc));
end;
DLL_PROCESS_DETACH:
begin
if FHandle > 0 then
begin // unhook
if Assigned(OldAppProc) then
SetWindowLong(FHandle, GWL_WNDPROC, LongInt(OldAppProc));
OldAppProc := nil;
end;
end;
end;
end;
begin
OldAppProc := nil;
FHandle := 0;
DllProc := @EntryPointProc;
EntryPointProc(DLL_PROCESS_ATTACH);
end.
{
SASWinHook
copyrights by Liu Yang LYSoft http://lysoft.7u7.net 2006.1.1
usage: only need to inject this dll to WinLogon.exe
}
uses Windows, Messages;
{$R *.res}
var
FHandle: THandle;
OldAppProc: Pointer;
function HookProc(hHandle: THandle; uMsg: Cardinal;
wParam, lParam: Integer): LRESULT; stdcall;
var K, C: Word; // wndproc
begin
if uMsg = WM_HOTKEY then
begin
K := HIWORD(lParam);
C := LOWORD(lParam);
// press Ctrl + Alt + Del
if (C and VK_CONTROL<>0) and (C and VK_MENU <>0) and ( K = VK_DELETE)
then Exit; // disable Ctrl + Alt + Del
end;
Result := CallWindowProc(OldAppProc, hHandle,
uMsg, wParam, lParam);
end;
procedure EntryPointProc(Reason: Integer);
begin
case reason of
DLL_PROCESS_ATTACH:
begin // hook SAS window wndproc
FHandle := FindWindow(‘SAS window class‘, ‘SAS window‘);
if not IsWindow(FHandle) then Exit; // is window found?
// save old wndproc
OldAppProc := Pointer(GetWindowLong(FHandle, GWL_WNDPROC));
// set new wndproc
SetWindowLong(FHandle, GWL_WNDPROC, Cardinal(@HookProc));
end;
DLL_PROCESS_DETACH:
begin
if FHandle > 0 then
begin // unhook
if Assigned(OldAppProc) then
SetWindowLong(FHandle, GWL_WNDPROC, LongInt(OldAppProc));
OldAppProc := nil;
end;
end;
end;
end;
begin
OldAppProc := nil;
FHandle := 0;
DllProc := @EntryPointProc;
EntryPointProc(DLL_PROCESS_ATTACH);
end.
屏闭NT/2000/XP/2003系统Ctrl+Alt+Del的完美解决方案
Windows XP系统中如何屏蔽 Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列 - VC知识库文章
NTDRL is missing.Press Ctrl+Alt+Del to restar.
Vista 开机登录时按 Ctrl+Alt+Del 登录是怎么设置
NT、2000、XP启动过程
NT,2000,XP 的 CDROM 引导扇区代码分析
NT,2000,XP 的 CDROM 引导扇区代码分析
Windows NT/2000/xp注册表的文件组成
windows98\ 2000 \ NT \ ME \ XP \vist的基本要求配置
CTRL、SHIFT、ALT及WIN键的功能
关于JS按键的代码、js回车/ctrl/ALT/SHIFT
忘记登录密码的解决方案 for XP/2003/2000
U盘安装XP之完美解决方案
《Word XP中神奇的Ctrl键》
Word XP中神奇的Ctrl键
Word XP中神奇的Ctrl键
NTFS格式的优势是什么? Windows专区 / Windows NT/2000/XP/...
合理利用Ctrl、Shift、Alt相关的一些快捷键可以大大提高工作效率
NT/XP下使计算机休眠(Hibernate)的代码
NT/XP下使计算机休眠(Hibernate)的代码
Alt】【Ctrl】【Shift】在PHOTOSHOP中的应用
不完美户型的完美解决方案
大型超市监控系统的解决方案
忘记Windows XP登录密码的解决方案