我现在要屏蔽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;
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;
Var
temp:integer;
begin
SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
end;
当你要恢复功能键时用以下代码:
Var
Temp:integer;
begin
SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
end;
SPI_SCREENSAVERRUNNING Windows 95 only: Used internally; applications should not use this flag.郁闷
eg: if key=#13 [or/and] then
key=#0
else
...