• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

DELPHI实现键盘勾子

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 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) <> 0then y:= 1
31         else if (p.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0then y:= 1
32         else if (p.vkCode = VK_ESCAPE) and ((GetKeyState(VK_MENU) and $8000) <> 0then y:= 1
33         else if (p.vkCode = 192and ((GetKeyState(VK_CONTROL) and $8000) <> 0then y:= 1
34         else if (p.vkCode = VK_TAB) and ((GetKeyState(VK_MENU) and $8000) <> 0then 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);



 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi中将4个Byte合成1个Integer的五种方法发布时间:2022-07-18
下一篇:
DELPHI正则表达式讲解发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap