• DELPHI实现键盘勾子


     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);



     

  • 相关阅读:
    移动端,多屏幕尺寸高清屏retina屏适配的解决方案
    angular 关于 factory、service、provider的相关用法
    2016最新手机号码正则、身份证JS正则表达式
    凸包总结
    BZOJ 3653: 谈笑风生(DFS序+可持久化线段树)
    BZOJ 3652: 大新闻(数位DP+概率论)
    BZOJ 1062: [NOI2008]糖果雨(二维树状数组)
    纪中集训 Day 8 & Last Day
    纪中集训 Day 7
    纪中集训 Day 6
  • 原文地址:https://www.cnblogs.com/whisht/p/2251797.html
Copyright © 2020-2023  润新知