gpt4 book ai didi

delphi - 如何使用 SetWindowHookEx api 锁定 CTRL+ALT+DEL?

转载 作者:行者123 更新时间:2023-12-03 15:51:39 24 4
gpt4 key购买 nike

下午好,

我需要使用SetWindowsHookEx锁定CTRL+ALT+DEL组合,今天我已经完成了一个代码,但直到现在才工作。

此代码在注入(inject)其他进程的 dll 中执行(此 dll 是我的软件)。

那么,我如何调整下面的代码才能工作?

const
WH_KEYBOARD_LL = 13;
LLKHF_ALTDOWN = $20;

type
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: Longint ;
end;

var
hhkLowLevelKybd : HHOOK;
FoldProc : LongInt;
hSASWnd : HWND;
hThread : Cardinal;

{$R *.dfm}

Function LowLevelKeyboardProc(nCode : Integer; wParam : Longint; var LParam: KBDLLHOOKSTRUCT) : Longint; stdcall;
var
fEatKeystroke : Boolean;
dwThreadId : Cardinal;
begin

If (nCode = HC_ACTION) Then
begin
If (wParam = WM_KEYDOWN) Or
(wParam = WM_SYSKEYDOWN) Or
(wParam = WM_KEYUP) Or
(wParam = WM_SYSKEYUP) Then
begin
fEatKeystroke :=
(((GetKeyState(VK_CONTROL) And $8000) <> 0) And
((LParam.flags And LLKHF_ALTDOWN ) <> 0) And
(LParam.vkCode = VK_DELETE));

End;

If fEatKeystroke Then
Result := -1
Else
Result := CallNextHookEx(0, nCode, wParam, LongInt(@LParam));
End;

end;

////////// FormCreate event here ///////////

hhkLowLevelKybd := 0;
hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardProc,
HInstance, 0);

end.

最佳答案

出于安全原因,Windows 不允许您拦截 Ctrl+Alt+Del。早期版本(Vista 之前?)曾经通过替换 GINA DLL 来允许它,但多年来一直不允许这样做。

该组合键被称为 secure attention sequence作为登录过程的一部分,保证是值得信赖的。

如果您的目标是仅允许运行您的应用程序,并且您运行的是合适的 Windows 版本,则可以将其配置为在 kiosk 模式下运行,如 Set up a device for anyone to use (kiosk mode) 中所示。 @LURD 善意提供的 TechNet。

关于delphi - 如何使用 SetWindowHookEx api 锁定 CTRL+ALT+DEL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com