在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 //调用键盘钩子,屏蔽功能键
2 function keyHookProc(nCode: Integer; LWParam: WPARAM; LLParam: LPARAM): LRESULT; stdcall; 3 4 var 5 hHk :HHOOK; 6 7 //创建勾子 8 hHk:= SetWindowsHookEx(13, @keyHookProc, HInstance, 0); 9 10 function keyHookProc(nCode: Integer; LWParam: WPARAM; LLParam: LPARAM): LRESULT;//调用键盘钩子,屏蔽功能键 11 var 12 p: PKBDLLHOOKSTRUCT; 13 y: integer; 14 begin 15 if nCode < 0 then 16 begin 17 Result:= CallNextHookEx(hHk, nCode, LWParam, LLParam); 18 Exit; 19 end 20 else 21 begin 22 y := 0; 23 case LWParam of 24 WM_KEYDOWN, WM_SYSKEYDOWN, WM_KEYUP,WM_SYSKEYUP: 25 begin 26 p:= PKBDLLHOOKSTRUCT(LLParam); 27 if p^.vkCode = VK_LWIN then y:= 1 28 else if p^.vkCode = VK_RWIN then y:= 1 29 else if (p.vkCode = VK_RETURN) and ((p.flags and (KF_ALTDOWN shr 8)) <> 0) 30 and ((GetKeyState(VK_CONTROL) and $8000) <> 0) then y:= 1 31 else if (p.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0) then y:= 1 32 else if (p.vkCode = VK_ESCAPE) and ((GetKeyState(VK_MENU) and $8000) <> 0) then y:= 1 33 else if (p.vkCode = 192) and ((GetKeyState(VK_CONTROL) and $8000) <> 0) then y:= 1 34 else if (p.vkCode = VK_TAB) and ((GetKeyState(VK_MENU) and $8000) <> 0) then y:= 1; 35 end; 36 end; 37 if y=1 then 38 Result:=1 //如果为WIN功能键则屏蔽 39 else 40 Result:= CallNextHookEx(hHk, nCode, LWParam, LLParam); //其他键放下一个钩子 41 end 42 end; 43 44 45 //卸载勾子 46 UnHookWindowsHookEx(hHk);
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论