大家好:
    当你不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键的时候,我应该怎么做啊  ???我能把整个键盘屏蔽掉,但屏蔽不了系统功能的组合键!!?!????
   
    请各位前辈指导啊!!!!!!!!!!!!!!

解决方案 »

  1.   

    Var  //禁止
    temp:integer;
    begin
    SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
    end;
    Var //恢复
    Temp:integer;
    begin
    SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
    end; 不起作用啊  ????????????????????为什么呢?
      

  2.   

    http://blog.joycode.com/jiangsheng/archive/2004/07/20/27909.aspx
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
        //function LowLevelKeyboardProc(nCode: Integer;
        //WParam: WPARAM;LParam: LPARAM):LRESULT; stdcall;
      end;  tagKBDLLHOOKSTRUCT = packed record//按键消息的结构
        vkCode: DWORD;//虚拟键值
        scanCode: DWORD;//扫描码值
        flags: DWORD;
        time: DWORD;//消息时间戳
        dwExtraInfo: DWORD;//和消息相关的扩展信息
      end;KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT;
    PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;//这个是低级键盘钩子的索引值,Delphi中没有,必须自己定义 
    const WH_KEYBOARD_LL = 13;
    //定义一个常量好和上面哪个结构中的flags比较而得出ALT键是否按下
    const LLKHF_ALTDOWN = $20;
    var
      Form1: TForm1;
      hhkLowLevelKybd: HHOOK;implementation{$R *.dfm}
    function LowLevelKeyboardProc(nCode: Integer;
    WParam: WPARAM;LParam: LPARAM):LRESULT; stdcall;
    var
    fEatKeystroke: BOOL;
    p: PKBDLLHOOKSTRUCT;
    begin
    Result := 0;
    fEatKeystroke := FALSE;
    p := PKBDLLHOOKSTRUCT (lParam);
    //nCode值为HC_ACTION时表示WParam和LParam参数包涵了按键消息
    if (nCode = HC_ACTION) then
    begin
    //拦截按键消息并测试是否是Ctrl+Esc、Alt+Tab、和Alt+Esc功能键。
    case wParam of
    WM_KEYDOWN,
    WM_SYSKEYDOWN,
    WM_KEYUP,
    WM_SYSKEYUP:
    fEatKeystroke :=
    ((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));
    end;
    end;if fEatKeystroke = True then
    Result := 1;
    if nCode <> 0 then
    Result := CallNextHookEx(0, nCode, wParam, lParam);end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //设置低级键盘钩子
    if hhkLowLevelKybd = 0 then
    begin
    hhkLowLevelKybd := SetWindowsHookExW(WH_KEYBOARD_LL,
    LowLevelKeyboardProc, Hinstance, 0);
    if hhkLowLevelKybd <> 0 then
    MessageBox(Handle, '低级键盘钩子设置成功!', '提示', MB_OK)
    else
    MessageBox(Handle, '低级键盘钩子设置失败!', '提示', MB_OK);
    end
    else
    MessageBox(Handle, '低级键盘钩子已设置!', '提示', MB_OK);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    //卸载低级键盘钩子
    if hhkLowLevelKybd <> 0 then
    if UnhookWindowsHookEx(hhkLowLevelKybd) <> False then
    begin
    MessageBox(Handle, '低级键盘钩子卸载成功!', '提示', MB_OK);
    hhkLowLevelKybd := 0;
    end
    else 
    MessageBox(Handle, '低级键盘钩子卸载失败!', '提示', MB_OK) 
    else
    MessageBox(Handle, '没有发现低级键盘钩子!', '提示', MB_OK);
    end;
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    //在Form关闭的时候检测,如果没有卸载钩子就卸载之
    if hhkLowLevelKybd <> 0 then
    UnhookWindowsHookEx(hhkLowLevelKybd);
    end;end.
      

  4.   

    ((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));如果想要屏蔽其他的键,你在此处继续添加你要屏蔽的键。
      

  5.   

    Var  //禁止
    temp:integer;
    begin
    SystemParametersInfo(Spi_screensaverrunning,1,@temp,0);
    end;
    Var //恢复
    Temp:integer;
    begin
    SystemParametersInfo(spi_screensaverrunning,0,@temp,0);
    end; 不起作用啊  ????????????????????为什么呢?98 下起作用 钩子钩不到cad的组合键盘 cad屏蔽,查询csdn 上cad屏蔽终结版 用进程注入,vc的代码
    原理也讲的很清楚,一般的组合键 屏蔽用楼上的
      

  6.   

    redlifl(丑女人)你好你太伟大了!我感觉你是高手级的前辈!!!!!!!!谢谢。/怎么再给你加分啊????????????我的WIN开发这一快很烂的您能否再给我指导一下? ??