我现在要屏蔽ALT+F4键,代码如下,执行后将键盘上所有按键屏蔽了,错在哪里,请高手指点。//Keyboard hook procedure
Function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;
Begin
  If code < 0 Then begin
    code:=HC_ACTION;
    wparam:= VK_MENU+VK_F4 ;
    KbHook := CallNextHookEx(oldHook, code, wparam, lparam );
  end
  Else
    KbHook := 1;
End;//屏蔽按键
Function DisableKeyboard: Boolean;
Begin
  oldHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, HInstance, 0 );
  DisableKeyboard := oldHook <> 0;
End;//释放按键
Procedure EnableKeyboard;
Begin
  If oldHook <> 0 Then Begin
    UnhookWindowshookEx( oldHook );
    oldHook := 0;
  End; 
End;

解决方案 »

  1.   

    屏蔽ALT+F4键我已搞定,上述代码有误。但是屏蔽ALT+Tab和Ctrl+ESC键尝试多次不成,请高手指点。
      

  2.   

    在delphi编程技巧中看过一段,自己试试,没成功,正好兄台也用到这块,大家一起试试如何屏蔽系统功能键  当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候加入以下代码:
    Var
    temp:integer;
    begin
    SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
    end;
      当你要恢复功能键时用以下代码:
    Var
    Temp:integer;
    begin
    SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
    end;
      

  3.   

    哎,查了一下帮助文件,找到原因了
    SPI_SCREENSAVERRUNNING Windows 95 only: Used internally; applications should not use this flag.郁闷
      

  4.   

    也可以通过KeyDown事件进行屏闭。
    eg: if key=#13 [or/and] then
           key=#0
        else
           ...
      

  5.   

    都不符合要求,一定要用键盘钩子实现,我已经可以将ALT+F4和CTRL+ESC及其他Win组合键屏蔽,现在ALT+Tab搞不定,请高手相助。