由于用底层钩子360会报警,用系统注册热键也不行。有谁有好的办法屏蔽WIN组合键,比如WIN+D

解决方案 »

  1.   

    http://bbs.ikaka.com/showtopic-8644303.aspx
    写注册表可以实现。
      

  2.   

    unit uHook; interface uses 
    Windows, Messages, SysUtils, Variants, Classes, Controls, Forms, 
    Dialogs, StdCtrls; type 
    tagKBDLLHOOKSTRUCT = packed record 
    vkCode: DWORD; 
    scanCode: DWORD; 
    flags: DWORD; 
    time: DWORD; 
    dwExtraInfo: DWORD; 
    end; 
    KBDLLHOOKSTRUCT= tagKBDLLHOOKSTRUCT; 
    PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; 
    const WH_KEYBOARD_LL = 13; 
    const LLKHF_ALTDOWN = $20; 
    function LowLevelKeyboardProc(nCode:Integer; 
    WParam: WPARAM;LParam:LPARAM):LRESULT;stdcall; 
    procedure hookstar; 
    procedure hookend; 
    var 
    hhkLowLevelKybd:HHOOK; implementation function LowLevelKeyboardProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM):LRESULT; stdcall; 
    var 
    fEatKeystroke: BOOL; 
    p: PKBDLLHOOKSTRUCT; 
    begin 
    Result:=0; 
    fEatKeystroke:=FALSE; 
    p:=PKBDLLHOOKSTRUCT(lParam); 
    if (nCode=HC_ACTION) then 
    begin 
    case wParam of 
    WM_KEYDOWN, 
    WM_SYSKEYDOWN, 
    WM_KEYUP, 
    WM_SYSKEYUP: 
    fEatKeystroke:= 
    ((p.vkCode=VK_TAB) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or 
    ((p.vkCode=VK_ESCAPE) and ((p.flags and LLKHF_ALTDOWN) <> 0))or 
    (p.vkCode=VK_Lwin) or 
    (p.vkCode=VK_Rwin) or 
    (p.vkCode=VK_apps) or 
    ((p.vkCode=VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) <> 0)) or 
    ((p.vkCode=VK_F4) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or 
    ((p.vkCode=VK_SPACE) and ((p.flags and LLKHF_ALTDOWN) <> 0)) or 
    (((p.vkCode=VK_CONTROL) and (P.vkCode = LLKHF_ALTDOWN and p.flags) and (P.vkCode=VK_Delete))) 
    end; 
    end; 
    if fEatKeystroke=True then 
    Result:=1; 
    if nCode <> 0 then 
    Result := CallNextHookEx(0,nCode,wParam,lParam); 
    end; procedure HookStar; 
    begin 
    if hhkLowLevelKybd=0 then 
    hhkLowLevelKybd:=SetWindowsHookExW(WH_KEYBOARD_LL,LowLevelKeyboardProc, Hinstance,0); 
    end; procedure HookEnd; 
    begin 
    if (hhkLowLevelKybd<>0) and UnhookWindowsHookEx(hhkLowLevelKybd) then 
    hhkLowLevelKybd:=0; 
    end; end. 
      

  3.   

    上面没有解决Ctrl-Alt-del的屏蔽,不过解决了许多的问题,学习了