不小心碰到就出开始菜单,不利于输入。

解决方案 »

  1.   

    试试 :function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
    type
    KBDLLHOOKSTRUCT=record
        vkCode:DWORD;
        scanCode:DWORD;
        flags:DWORD;
        time:DWord;
        dwExtraInfo:dword;
    end;
    var
       fFlag:BOOL;
       p:^KBDLLHOOKSTRUCT;
    begin
       result:=0;
       fFlag := false;
       p:=Pointer(LPARAM);
       if (ncode=HC_ACTION) then
       begin
       case wparam of
        WM_KEYDOWN,
        WM_SYSKEYDOWN,
        WM_KEYUP,
        WM_SYSKEYUP:
        fFlag :=(p.vkCode = VK_Lwin) or (p.vkCode = VK_Rwin)or (p.vkCode = VK_apps);
        end;
        end;
        if fFlag = true then
           Result:=1;
        if ncode <> 0 then
           Result := CallNextHookEX(0,ncode,wparam,lparam);
    end;
    调用:procedure TForm1.Button1Click(Sender: TObject);
    const
        WH_KEYBOARD_LL=13;
    begin
      setwindowshookexw(WH_KEYBOARD_LL,LowlevelKeyboardproc,hinstance,0);
    end;
      

  2.   

    设置敏感健:resgisterHotKey(handle,GlobalAddAtom(Pchar(UserDefineHotKey))-$C000,
                   MOD_win ,//要不就是MOD_Windows,记不清了
                   nil);消息响应函数:procedure WMhotKeyhandel(var msg:Tmessage);message Wm_HotKey;begin  if msg.lpararmLo=Mod_win then
       .....end;释放敏感健:
     unregisterhotkey(handle,GlobalAddAtom(Pchar(UserDefineHotKey))-$C000);
     deleteAtom(GlobalAddAtom(Pchar(UserDefineHotKey))-$C000);