zoukankan      html  css  js  c++  java
  • 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);



     

  • 相关阅读:
    id选择器
    HTML列表标签
    HTML表格标签
    HTML常见标签
    javascript代码 调试方法
    圣杯布局和双飞翼布局
    javascript 类型转换。
    javascript的defer和async的区别。
    乱码引起的CSS失效原理,解决技巧。
    浏览器渲染引擎,提高css渲染速度。
  • 原文地址:https://www.cnblogs.com/whisht/p/2251797.html
Copyright © 2011-2022 走看看