type
tagKBDLLHOOKSTRUCT = packed record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: Pointer;
end;
KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT;
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
const
WH_KEYBOARD_LL = 13;
WH_MOUSE_LL = 14;
var
keyHookHandle: THandle;
function KeyHookProc(Code: integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
stdcall;
var
p: PKBDLLHOOKSTRUCT;
bBlock: Boolean;
begin
bBlock := False;
if Code = HC_ACTION then begin
case wParam of
WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP, WM_SYSKEYUP: begin
p := PKBDLLHOOKSTRUCT(lParam);
if(p^.vkCode = VK_LWIN) or (p^.vkCode = VK_RWIN) then bBlock := True;
if(p^.vkCode = VK_CONTROL) or (p^.vkCode = VK_ESCAPE) then bBlock := True;
if(p^.vkCode = VK_MENU) or (p^.vkCode = VK_TAB) then bBlock := True;
end;
else begin
bBlock := False;
end;
end;
end;
if bBlock = False then
Result := CallNextHookEx(keyHookHandle, Code, wParam, lParam)
else
Result := 1
end;
Delphi禁用windows键
最新推荐文章于 2018-04-05 17:16:32 发布
本文详细解释了如何使用键盘钩子API实现特定的键盘事件拦截和处理逻辑,包括处理Win键、Ctrl键、Esc键及Tab键等常用键位。
1302

被折叠的 条评论
为什么被折叠?



