ilikenba 发表于 2004-4-28 22:52

一段屏蔽系统功能键的代码!

<P>LRESULT __stdcall LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
  BOOL fEatKeystroke = FALSE;
  if (nCode == HC_ACTION)
  {
     switch (wParam)
     {
        case WM_KEYDOWN: case WM_SYSKEYDOWN:
        case WM_KEYUP: case WM_SYSKEYUP:
        PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
        fEatKeystroke=((p-&gt;vkCode == VK_TAB) &amp;&amp; ((p-&gt;flags &amp; LLKHF_ALTDOWN) != 0)) ||
        ((p-&gt;vkCode == VK_ESCAPE) &amp;&amp; ((p-&gt;flags &amp; LLKHF_ALTDOWN) != 0)) ||
        ((p-&gt;vkCode == VK_ESCAPE) &amp;&amp; ((GetKeyState(VK_CONTROL) &amp; 0x8000) != 0)||
        (p-&gt;vkCode == VK_LWIN) || (p-&gt;vkCode == VK_RWIN));
         break;
    }
  }
  return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL,
  (HOOKPROC)LowLevelKeyboardProc, HInstance, 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   UnhookWindowsHookEx(hhkLowLevelKybd);
}</P>
<P>这段代码显示了如何屏蔽系统功能键Alt+TAB的例子,可以扩展到屏蔽其他的功能键,但不能屏蔽Ctrl+Alt+Del.</P>

libertysigil 发表于 2004-4-30 17:07

<P>必须用全局钩子才能屏蔽吗??</P>

ilikenba 发表于 2004-4-30 20:47

不知道,是否有别的办法!哪位有的话最好拿出来共享呀!
页: [1]
查看完整版本: 一段屏蔽系统功能键的代码!