如题

解决方案 »

  1.   

    回复人: hqhhh(枫叶) ( ) 
     
    我的键盘上怎么没有这三个键!
    晕死,你是啥年代的键盘?????
    呵呵,我同意做钩子
     
     
      

  2.   

    给你找了个帖子你看看。power键可以用钩子屏蔽,不过sleep和wake就不太清楚了。http://community.csdn.net/Expert/topic/3627/3627487.xml?temp=.7071039
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      KBDLLHOOKSTRUCT=record
        vkCode:DWORD;
        scanCode:DWORD;
        flags:DWORD;
        time:DWORD;
        dwExtraInfo:ulong;
      end;
      LPKBDLLHOOKSTRUCT=^KBDLLHOOKSTRUCT;
    var
      Form1: TForm1;
      //定义句柄
      OldHook:HHOOK;// 钩子 句柄
    implementation{$R *.dfm}
    const
    LLKHF_ALTDOWN=$20;
    WH_KEYBOARD_LL= 13;//键盘钩子  封锁 windows 热键
    function KeyProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
    var
    pkbhs:LPKBDLLHOOKSTRUCT;
    begin
        Result:=1;
        if (code < 0) then
        begin
            Result:= CallNextHookEx(OldHook,code, wParam, lParam);
            exit;
        end;    pkbhs := LPKBDLLHOOKSTRUCT( lParam);    if (pkbhs.vkCode=91) then//封锁win键
        begin
            exit;
        end;    if (pkbhs.vkCode=VK_ESCAPE) and  (GetAsyncKeyState(VK_CONTROL)<0) then
        begin
            exit;  //封锁 CTRL+ESC
        end;    if (pkbhs.vkCode=VK_TAB) and (( LLKHF_ALTDOWN and pkbhs.flags)>0) then
        begin
            exit;  //封锁 ALT+TAB
        end;    if (pkbhs.vkCode=115) and ((pkbhs.flags and LLKHF_ALTDOWN)>0) then
        begin
            exit;  //封锁 ALT+F4
        end;    if (pkbhs.vkCode=VK_ESCAPE) and ((pkbhs.flags and LLKHF_ALTDOWN)>0) then
        begin
            exit;  //封锁 ALT+ESC
        end;    if (pkbhs.vkCode=VK_SPACE) and (GetAsyncKeyState(VK_CONTROL)<0) then
        begin
            exit;  //封锁 CTRL+ ' '
        end;
        if (pkbhs.vkCode=VK_SNAPSHOT) then
        begin
            exit;  //封锁 Print Screen
        end;
        if(pkbhs.vkCode=164) then
        begin
           exit;
        end;
        Result:=CallNextHookEx(OldHook, code, wParam, lParam);
    end;//---------------------------------------------------------------------------procedure TForm1.FormCreate(Sender: TObject);
    begin
      OldHook:=0;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      if OldHook>0 then
      UnhookWindowsHookEx(OldHook);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      //注册 钩子
        OldHook := SetWindowsHookEx(WH_KEYBOARD_LL {WH_KEYBOARD_LL},
           KeyProc, HInstance, 0);
        if (Sender is TButton) then
           TButton(Sender).Enabled:=not (OldHook>0);
    end;end.
      

  4.   

    To:hugoon(hugoon)你的低级键盘钩子屏蔽的都是windows定义了的标准键。你看看windows定义power、wake、sleep3格键的键值了吗?
      

  5.   

    http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
      

  6.   

    呵呵, 确实没有定义
     VK_LBUTTON 01 Left mouse button 
    VK_RBUTTON 02 Right mouse button 
    VK_CANCEL 03 Control-break processing 
    VK_MBUTTON 04 Middle mouse button (three-button mouse) 
     ? 05-07 Undefined 
    VK_BACK 08 BACKSPACE key 
    VK_TAB 09 TAB key 
     ? 0A-0B Undefined 
    VK_CLEAR 0C CLEAR key 
    VK_RETURN 0D ENTER key 
     ? 0E-0F Undefined 
    VK_SHIFT 10 SHIFT key 
    VK_CONTROL 11 CTRL key 
    VK_MENU 12 ALT key 
    VK_PAUSE 13 PAUSE key 
    VK_CAPITAL 14 CAPS LOCK key 
     ? 15-19 Reserved for Kanji systems 
     ? 1A Undefined 
    VK_ESCAPE 1B ESC key 
     ? 1C-1F Reserved for Kanji systems 
    VK_SPACE 20 SPACEBAR 
    VK_PRIOR 21 PAGE UP key 
    VK_NEXT 22 PAGE DOWN key 
    VK_END 23 END key 
    VK_HOME 24 HOME key 
    VK_LEFT 25 LEFT ARROW key 
    VK_UP 26 UP ARROW key 
    VK_RIGHT 27 RIGHT ARROW key 
    VK_DOWN 28 DOWN ARROW key 
    VK_SELECT 29 SELECT key 
     ? 2A Original equipment manufacturer (OEM) specific 
    VK_EXECUTE 2B EXECUTE key 
    VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later 
    VK_INSERT 2D INS key 
    VK_DELETE 2E DEL key 
    VK_HELP 2F HELP key 
    VK_0 30 0 key 
    VK_1 31 1 key 
    VK_2 32 2 key 
    VK_3 33 3 key 
    VK_4 34 4 key 
    VK_5 35 5 key 
    VK_6 36 6 key 
    VK_7 37 7 key 
    VK_8 38 8 key 
    VK_9 39 9 key 
     ? 3A-40 Undefined 
    VK_A 41 A key 
    VK_B 42 B key 
    VK_C 43 C key 
    VK_D 44 D key 
    VK_E 45 E key 
    VK_F 46 F key 
    VK_G 47 G key 
    VK_H 48 H key 
    VK_I 49 I key 
    VK_J 4A J key 
    VK_K 4B K key 
    VK_L 4C L key 
    VK_M 4D M key 
    VK_N 4E N key 
    VK_O 4F O key 
    VK_P 50 P key 
    VK_Q 51 Q key 
    VK_R 52 R key 
    VK_S 53 S key 
    VK_T 54 T key 
    VK_U 55 U key 
    VK_V 56 V key 
    VK_W 57 W key 
    VK_X 58 X key 
    VK_Y 59 Y key 
    VK_Z 5A Z key 
    VK_LWIN 5B Left Windows key (Microsoft Natural Keyboard) 
    VK_RWIN 5C Right Windows key (Microsoft Natural Keyboard) 
    VK_APPS 5D Applications key (Microsoft Natural Keyboard) 
     ? 5E-5F Undefined 
    VK_NUMPAD0 60 Numeric keypad 0 key 
    VK_NUMPAD1 61 Numeric keypad 1 key 
    VK_NUMPAD2 62 Numeric keypad 2 key 
    VK_NUMPAD3 63 Numeric keypad 3 key 
    VK_NUMPAD4 64 Numeric keypad 4 key 
    VK_NUMPAD5 65 Numeric keypad 5 key 
    VK_NUMPAD6 66 Numeric keypad 6 key 
    VK_NUMPAD7 67 Numeric keypad 7 key 
    VK_NUMPAD8 68 Numeric keypad 8 key 
    VK_NUMPAD9 69 Numeric keypad 9 key 
    VK_MULTIPLY 6A Multiply key 
    VK_ADD 6B Add key 
    VK_SEPARATOR 6C Separator key 
    VK_SUBTRACT 6D Subtract key 
    VK_DECIMAL 6E Decimal key 
    VK_DIVIDE 6F Divide key 
    VK_F1 70 F1 key 
    VK_F2 71 F2 key 
    VK_F3 72 F3 key 
    VK_F4 73 F4 key 
    VK_F5 74 F5 key 
    VK_F6 75 F6 key 
    VK_F7 76 F7 key 
    VK_F8 77 F8 key 
    VK_F9 78 F9 key 
    VK_F10 79 F10 key 
    VK_F11 7A F11 key 
    VK_F12 7B F12 key 
    VK_F13 7C F13 key 
    VK_F14 7D F14 key 
    VK_F15 7E F15 key 
    VK_F16 7F F16 key 
    VK_F17 80H F17 key 
    VK_F18 81H F18 key 
    VK_F19 82H F19 key 
    VK_F20 83H F20 key 
    VK_F21 84H F21 key 
    VK_F22 85H F22 key 
    VK_F23 86H F23 key 
    VK_F24 87H F24 key 
     ? 88-8F Unassigned 
    VK_NUMLOCK 90 NUM LOCK key 
    VK_SCROLL 91 SCROLL LOCK key 
     ? 92-B9 Unassigned 
     ? BA-C0 OEM specific 
     ? C1-DA Unassigned 
     ? DB-E4 OEM specific 
     ? E5 Unassigned 
     ? E6 OEM specific 
     ? E7-E8 Unassigned 
     ? E9-F5 OEM specific 
    VK_ATTN F6 Attn key
    VK_CRSEL F7 CrSel key
    VK_EXSEL F8 ExSel key
    VK_EREOF F9 Erase EOF key
    VK_PLAY FA Play key
    VK_ZOOM FB Zoom key
    VK_NONAME FC Reserved for future use. 
    VK_PA1 FD PA1 key
    VK_OEM_CLEAR FE Clear key