键盘上有"WakeUP","Sleep","Power"三个快捷键,经常误按导致操作全部丢失,由于是品牌机,BIOS设置有限,所以无法通过BIOS设置更改解决。请问如何在程序中屏蔽这三个键?

解决方案 »

  1.   

    不能用"If KeyCode = XX Then"来实现吗?
      

  2.   

    ' 我一直都认为不能屏蔽这种键盘,直到我看到下面好外这段代码,才知道我错了!VERSION 5.00
    Begin VB.Form frmMain 
       Caption         =   "Form1"
       ClientHeight    =   5715
       ClientLeft      =   1965
       ClientTop       =   1545
       ClientWidth     =   6585
       LinkTopic       =   "Form1"
       ScaleHeight     =   5715
       ScaleWidth      =   6585
       Begin VB.CheckBox chkDisable 
          Caption         =   "&Disable ALT-TAB, ALT-ESC, CTRL-ESC"
          Height          =   495
          Left            =   960
          TabIndex        =   0
          Top             =   120
          Width           =   3735
       End
    End
    Attribute VB_Name = "frmMain"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = False
    Option ExplicitDim hhkLowLevelKybd As LongPrivate Sub chkDisable_Click()
    If chkDisable = vbChecked Then
        hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
    Else
        UnhookWindowsHookEx hhkLowLevelKybd
        hhkLowLevelKybd = 0
    End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd
    End Sub
    'mod里面的代码Attribute VB_Name = "modDisableLowLevelKeys"
    Option ExplicitPublic Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Public Const HC_ACTION = 0
    Public Const WM_KEYDOWN = &H100
    Public Const WM_KEYUP = &H101
    Public Const WM_SYSKEYDOWN = &H104
    Public Const WM_SYSKEYUP = &H105
    Public Const VK_TAB = &H9
    Public Const VK_CONTROL = &H11
    Public Const VK_ESCAPE = &H1BPublic Const WH_KEYBOARD_LL = 13
    Public Const LLKHF_ALTDOWN = &H20Public Type KBDLLHOOKSTRUCT
        vkCode As Long
        scanCode As Long
        flags As Long
        time As Long
        dwExtraInfo As Long
    End TypeDim p As KBDLLHOOKSTRUCTPublic Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
       Dim fEatKeystroke As Boolean
       
       If (nCode = HC_ACTION) Then
          If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
             CopyMemory p, ByVal lParam, Len(p)
             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 &H8000) <> 0)) Or _
                ((p.vkCode = vbKeyDelete) And ((GetKeyState(VK_CONTROL) And &H8000 <> 0) And (GetKeyState(vbKeyShift) And &H8000) <> 0))
            End If
        End If
        
        If fEatKeystroke Then
            LowLevelKeyboardProc = -1
        Else
            LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
        End If
    End Function
      

  3.   

    http://search.csdn.net/Expert/topic/884/884840.xml?temp=.2477838
      

  4.   

    键盘映射工具 V1.0功能:通过修改注册表来进行键盘键的重新定义。
    文件大小:35K
    适用系统:Windows 2000/XP/2003说明:本键盘映射工具仅修改注册表,不驻留内存。
    通过本工具,你可以将键盘上一些不常用的键定义
    为其它功能或者将其禁用,如将 ScrollLock 定义
    为静音、Wake Up 定义为减小音量、Sleep 定义为
    增大音量等等。
    注意:如要将 Power/Sleep 这两个键重定义,在
    XP 下需要在控制面板/电源选项/高级/电源按
    钮设置中改为“不采取任何措施”。而在 Windows
    2000  下不能完全禁用其原功能,导入 XP 的某些
    注册表项目可以实现,但我还没有整理清楚。作者主页:http://silence.hao-8.com/下载地址:http://silence.hao-8.com/keybmap.rar