안녕하세요,SetWindowHookEx API를 사용하여 CTRL + ALT + DEL을 잠그는 방법은 무엇입니까?
나는 내가 코드를 수행하고 지금까지 노력하지 않는 SetWindowsHookEx
오늘을 사용 CTRL + ALT + DEL 조합을 잠글 필요가있다.
이 코드는 다른 프로세스에서 주입되는 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에서는 해당 키 조합을 가로 채기 위해 허용하지 않습니다. 이전 버전에서는 가능했지만 최근 버전에서는 차단할 수없는 하위 수준에서 해당 키 조합을 처리합니다. 보안상의 문제입니다. 관련 항목 : http://stackoverflow.com/q/17103682/62576 –
참고 [[모든 사람이 키오스크 모드 사용을위한 장치 설정] (https://technet.microsoft.com/sv-se/itpro/windows)/관리/설정 - 장치 - 사람 - 위해 - 사용하기 위해). –
가장 쉬운 방법은 키보드에서 3 개의 키 중 하나를 제거하는 것입니다. –