我用delphi7和winxp下调试,在一个dll文件里面
function KeyHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;
var
  blEatKeystroke: Boolean;
  p: PKBDLLHOOKSTRUCT;
begin
  blEatKeystroke := False;
  if nCode = HC_ACTION then
  begin
    case wParam of
      WM_KEYDOWN,
      WM_SYSKEYDOWN,
      WM_KEYUP,
      WM_SYSKEYUP:
        begin
          p := PKBDLLHOOKSTRUCT(lParam);           // 进行按键过滤
          blEatKeystroke := (((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_ESCAPE) and
                              ((GetKeyState(VK_CONTROL) and $8000) <> 0)) or
                              ((p^.vkCode = VK_DELETE) and
                              ((p^.flags and LLKHF_ALTDOWN) <> 0) and
                              ((GetKeyState(VK_CONTROL) and $8000) <> 0)));
        end;
    end; // End of Case
  end;
  if blEatKeystroke then
  begin
    Result := 10;       // 捕获这些组合键,按键消息由自己处理,必须返回 non zero    //Hook.ShowHookInfo; // 显示一个窗口,你可以改为自己的处理代码
    //MessageBeep(0);
   // MessageBeep(0);
    MessageBox(0,'warning','',MB_OK);
  end
  else
    // 其他的按键,交由别的线程处理(过滤)
    Result := CallNextHookEx(0, nCode, wParam, lParam);
end;然后在另一个应用程序里面调用的时候,当一个事件发生,比如按下alt+tab,系统先执行我的MessageBox(0,'warning','',MB_OK);然后继续执行切换窗口的功能,不是说result不返回0就可以让windows不继续传送消息么,我的目的就是把这几个组合键屏蔽掉,问题出在哪里?