热情软件屋

 

键盘钩子函数不能禁止WINDOWS功能键


编号:QA001602
建立日期: 1999年8月26日 最后修改日期:2002年12月22日
所属类别:

djs:
    delphi4.0
    win97
    请问专家?我看了你一些问题后编了以下钩子函数:
     function GetKeyHook( Code: Integer;wParam: WPARAM;lParam:LPARAM): LRESULT; stdcall;export;
     //键盘钩子涵数.
     begin
     result:=1;
     end;
    
     function InstallHook() : boolean; export;
     begin
     Result := TRUE;
     if HookCount = 0 then
     HookHandle := SetWindowsHookEx(WH_KEYBOARD, @GetKeyHook, HInstance, 0);
     if HookHandle <> 0 then
     inc(HookCount)
     else
     Result := FALSE;
     end;
    调用后能安装了钩子,且钩子返回1后已禁止了键盘消息的发生,可是其它WINDOWS功能键(弹出"开始"菜单键和CTRL+ALT+DEL键)的消息不能禁止,不知这两个函数错在那里?

回答:

    因为系统键在调用WH_KEYBOARD钩子之前就已经被处理了,你在WH_KEYBOARD钩子中无法处理。在Windows 9x下要禁用系统键可以参考QA000295 "如何封锁“CTRL+ALT+DEL”和“ALT+ESC”组合键"QA000171 "如何封锁ALT-TAB、ALT-CTRL-DEL键以及不让Windows的任务栏出现"
    在Windows NT 4.0 SP3以后的版本可以使用WH_KEYBOARD_LL钩子。
    
    dd的意见:
    建议用日志钩子,他在系统处理前处理。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio