就是在系统中按什么键都失效!  求冻结代码和解除冻结的代码   感激万分!!!!!!!!!!

解决方案 »

  1.   

    我没有试过,只提供一个思路:
    GetDesktopWindow  得到桌面窗口的句柄
    SetWindowsHookEx 设置挂钩
    在钩子函数中响应键盘消息
      

  2.   

    阻塞键盘鼠标输入
    // Import BlockInput function form user32.dll: // BlockInput Funktion von user32.dll importieren: function BlockInput (fBlockInput : boolean) : DWord; stdcall; external 'user32.DLL'; {block input/ blockieren} procedure TForm1.Button1Click(Sender: TObject); 
    begin 
     BlockInput(true); 
    end; {unblock input / Blockierung aufheben} procedure TForm1.Button2Click(Sender: TObject); 
    begin 
     BlockInput(false); 
    end; Note: Requires Windows 98/2000 or later.   You can unblock input by pressing   CTRL+ALT+DEL 
      

  3.   

    靠----我的话,被: tankkxx(冬天不要放火) 说了---------
      

  4.   

    我可以给你一个屏蔽WIN键的代码,其他键我想应该也不难屏蔽,在keydown中写unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        BtnSetHook: TButton;
        BtnClearHook: TButton;
        Button3: TButton;
        procedure Button3Click(Sender: TObject);
        procedure BtnSetHookClick(Sender: TObject);
        procedure BtnClearHookClick(Sender: TObject);
      private
        //FHookSet: Boolean; 
        //procedure EnableButtons;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function LowLevelKeyboardProc(nCode:integer;WParam:WPARAM;LParam:LPARAM):LRESULT;stdcall;
    type
    KBDLLHOOKSTRUCT=record
        vkCode:DWORD;
        scanCode:DWORD;
        flags:DWORD;
        time:DWord;
        dwExtraInfo:dword;
    end;
    var
       fFlag:BOOL;
       p:^KBDLLHOOKSTRUCT;
    begin
       result:=0;
       fFlag := false;
       p:=Pointer(LPARAM);
       if (ncode=HC_ACTION) then
       begin
         case wparam of
            WM_KEYDOWN,
            WM_SYSKEYDOWN,
            WM_KEYUP,
            WM_SYSKEYUP:
            fFlag :=(p.vkCode = VK_Lwin) or (p.vkCode = VK_Rwin)or (p.vkCode = VK_apps);
         end;
       end;
       if fFlag = true then Result:=1;
       if ncode <> 0 then Result := CallNextHookEX(0,ncode,wparam,lparam);
    end;procedure TForm1.Button3Click(Sender: TObject);
    const
        WH_KEYBOARD_LL=13;
    begin
      setwindowshookexw(WH_KEYBOARD_LL,LowlevelKeyboardproc,hinstance,0);
    end;procedure TForm1.BtnSetHookClick(Sender: TObject);
    var
      wndHandle : THandle;
      wndClass : array[0..50] of Char;
      s:integer;
    begin
      StrPCopy(@wndClass[0], 'Shell_TrayWnd');
      wndHandle := FindWindow(@wndClass[0], nil);
      s:= SW_show;
      ShowWindow(wndHandle, s); // 显示
    end;procedure TForm1.BtnClearHookClick(Sender: TObject);
    var
    wndHandle : THandle;
    wndClass : array[0..50] of Char;
    s:integer;
    begin
    StrPCopy(@wndClass[0], 'Shell_TrayWnd');
    wndHandle := FindWindow(@wndClass[0], nil);
    s:= SW_HIDE;
    ShowWindow(wndHandle, s); //隐藏
    end;
    end.
      

  5.   

    有个简单的方法,我使用成功了。
    在keypress事件中写:
    if key=#8 then
        key:=#0
      else key:=#0;然后在KEYDOWN事件中写:
    if key=8 then
        key:=0
     else key:=0;KEY的值可任意写某个键盘键的编码。给分吧。