读书人

如何测试到键盘的多媒体键(如上网键、

发布时间: 2012-03-03 15:33:02 作者: rapoo

怎么测试到键盘的多媒体键(如上网键、我的电脑、音量+、音量-,睡眠键、电源键等等
小弟刚刚学习VB,现在公司需要做一款多媒体键盘的测试程序。但是小弟做了一款程序,只能测试107个普通按键啊,其他的多媒体按键测试不了。找到一款前辈写的程序,用的他自己做的 *.dll,但是有很多多媒体按键测试不出来,而且按下WIN键时,还会弹出“开始菜单”,按下“上网键”时也会弹出网页,测试时很不方面。


哪位大哥能帮帮小弟。要能够测试键盘的所有普通按键、WIN键、多媒体键,而不会弹出对话框、网页等选项的。下面是我的VB代码,请各位大哥帮帮改改,谢谢!!

form1里面的代码:

VB code
Option ExplicitConst LEFT_BUTTON = 1Const RIGHT_BUTTON = 2Const MIDDLE_BUTTON = 4Const RED = &HFFConst NORMAL = &H80000005Private Sub Form_Load()        On Error Resume Next    ' 本W KeyboardHook_HookProc ㄧ计    SetKeyboardHook Me.hwnd, WM_USER    If Err.Number <> 0 Then        MsgBox "非 KeybHook.dll 定义之 Windows键", vbCritical        End    End If    On Error GoTo 0        ' 本W跌怠    prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)    SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc     Dim pOld As Boolean        ' 琵Ctrl+Alt+Del舱X龄ア    SystemParametersInfoByRef SPI_SCREENSAVERRUNNING, True, pOld, 0End SubPrivate Sub Form_Unload(Cancel As Integer) Dim pOld As Boolean        ' 齑_Ctrl+Alt+Del舱X龄亥\    SystemParametersInfoByRef SPI_SCREENSAVERRUNNING, False, pOld, 0    ' U KeyboardHook_HookProc ㄧ计    ReleaseKeyboardHook        ' U跌怠    SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProcEnd SubPrivate Sub Label111_Click() Dim pOld As Boolean        ' 齑_Ctrl+Alt+Del舱X龄亥\    SystemParametersInfoByRef SPI_SCREENSAVERRUNNING, False, pOld, 0Unload MeEnd Sub


模块里面的代码:通过 lParam 的值来确定对应哪个按键
VB code
Option ExplicitPublic totalkey As IntegerPublic countkey As IntegerPublic countk(200) As IntegerPublic count1 As IntegerPublic count2 As IntegerPublic count3 As IntegerPublic Const GWL_WNDPROC = (-4)Public Const WM_USER = &H400Public Const WM_KEYDOWN = &H100Public Const WM_KEYUP = &H101Public Const WM_CHAR = &H102Public Const WM_SYSKEYDOWN = &H104Public Const WM_SYSKEYUP = &H105Public Const WM_SYSCHAR = &H106Public Const WM_NCHITTEST = &H84Public Const HTCLIENT = 1Public Const HTCAPTION = 2Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As LongDeclare Function SystemParametersInfoByRef Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As LongDeclare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongDeclare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongDeclare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongDeclare Function SetKeyboardHook Lib "KeybHook" (ByVal hwndPost As Long, ByVal Msg As Long) As LongDeclare Function ReleaseKeyboardHook Lib "KeybHook" () As LongDeclare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long 'msgboxPublic prevWndProc As LongFunction WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long     If Msg = WM_USER Then        Form1.List1.AddItem "wParam=" & wParam & ", lParam=" & Hex(lParam)        Form1.List1.ListIndex = Form1.List1.NewIndex        Select Case lParam        Case &H80010201:            Dim pOld As Boolean                ' 齑_Ctrl+Alt+Del舱X龄亥\            SystemParametersInfoByRef SPI_SCREENSAVERRUNNING, False, pOld, 0            Unload Form1     End Select    End If    WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)End Function 



另外一个模块代码:
VB code
Public Const SPI_GETACCESSTIMEOUT = 60Public Const SPI_GETANIMATION = 72Public Const SPI_GETBEEP = 1Public Const SPI_GETBORDER = 5Public Const SPI_GETDEFAULTINPUTLANG = 89Public Const SPI_GETDRAGFULLWINDOWS = 38Public Const SPI_GETFASTTASKSWITCH = 35Public Const SPI_GETFILTERKEYS = 50Public Const SPI_GETFONTSMOOTHING = 74Public Const SPI_GETGRIDGRANULARITY = 18Public Const SPI_GETHIGHCONTRAST = 66Public Const SPI_GETICONMETRICS = 45Public Const SPI_GETICONTITLELOGFONT = 31Public Const SPI_GETICONTITLEWRAP = 25Public Const SPI_GETKEYBOARDDELAY = 22Public Const SPI_GETKEYBOARDPREF = 68Public Const SPI_GETKEYBOARDSPEED = 10Public Const SPI_GETLOWPOWERACTIVE = 83Public Const SPI_GETLOWPOWERTIMEOUT = 79Public Const SPI_GETMENUDROPALIGNMENT = 27Public Const SPI_GETMINIMIZEDMETRICS = 43Public Const SPI_GETMOUSE = 3Public Const SPI_GETMOUSEKEYS = 54Public Const SPI_GETMOUSETRAILS = 94Public Const SPI_GETNONCLIENTMETRICS = 41Public Const SPI_GETPOWEROFFACTIVE = 84Public Const SPI_GETPOWEROFFTIMEOUT = 80Public Const SPI_GETSCREENREADER = 70Public Const SPI_GETSCREENSAVEACTIVE = 16Public Const SPI_GETSCREENSAVETIMEOUT = 14Public Const SPI_GETSERIALKEYS = 62Public Const SPI_GETSHOWSOUNDS = 56Public Const SPI_GETSOUNDSENTRY = 64Public Const SPI_GETSTICKYKEYS = 58Public Const SPI_GETTOGGLEKEYS = 52Public Const SPI_GETWINDOWSEXTENSION = 92Public Const SPI_GETWORKAREA = 48Public Const SPI_ICONHORIZONTALSPACING = 13Public Const SPI_ICONVERTICALSPACING = 24Public Const SPI_LANGDRIVER = 12Public Const SPI_SCREENSAVERRUNNING = 97Public Const SPI_SETACCESSTIMEOUT = 61Public Const SPI_SETANIMATION = 73Public Const SPI_SETBEEP = 2Public Const SPI_SETBORDER = 6Public Const SPI_SETCURSORS = 87Public Const SPI_SETDEFAULTINPUTLANG = 90Public Const SPI_SETDESKPATTERN = 21Public Const SPI_SETDESKWALLPAPER = 20Public Const SPI_SETDOUBLECLICKTIME = 32Public Const SPI_SETDOUBLECLKHEIGHT = 30Public Const SPI_SETDOUBLECLKWIDTH = 29Public Const SPI_SETDRAGFULLWINDOWS = 37Public Const SPI_SETDRAGHEIGHT = 77Public Const SPI_SETDRAGWIDTH = 76Public Const SPI_SETFASTTASKSWITCH = 36Public Const SPI_SETFILTERKEYS = 51Public Const SPI_SETFONTSMOOTHING = 75Public Const SPI_SETGRIDGRANULARITY = 19Public Const SPI_SETHANDHELD = 78Public Const SPI_SETHIGHCONTRAST = 67Public Const SPI_SETICONMETRICS = 46Public Const SPI_SETICONS = 88Public Const SPI_SETICONTITLELOGFONT = 34Public Const SPI_SETICONTITLEWRAP = 26Public Const SPI_SETKEYBOARDDELAY = 23Public Const SPI_SETKEYBOARDPREF = 69Public Const SPI_SETKEYBOARDSPEED = 11Public Const SPI_SETLANGTOGGLE = 91Public Const SPI_SETLOWPOWERACTIVE = 85Public Const SPI_SETLOWPOWERTIMEOUT = 81Public Const SPI_SETMENUDROPALIGNMENT = 28Public Const SPI_SETMINIMIZEDMETRICS = 44Public Const SPI_SETMOUSE = 4Public Const SPI_SETMOUSEBUTTONSWAP = 33Public Const SPI_SETMOUSEKEYS = 55Public Const SPI_SETMOUSETRAILS = 93Public Const SPI_SETNONCLIENTMETRICS = 42Public Const SPI_SETPENWINDOWS = 49Public Const SPI_SETPOWEROFFACTIVE = 86Public Const SPI_SETPOWEROFFTIMEOUT = 82Public Const SPI_SETSCREENREADER = 71Public Const SPI_SETSCREENSAVEACTIVE = 17Public Const SPI_SETSCREENSAVETIMEOUT = 15Public Const SPI_SETSERIALKEYS = 63Public Const SPI_SETSHOWSOUNDS = 57Public Const SPI_SETSOUNDSENTRY = 65Public Const SPI_SETSTICKYKEYS = 59Public Const SPI_SETTOGGLEKEYS = 53Public Const SPI_SETWORKAREA = 47Public Const SPIF_UPDATEINIFILE = &H1Public Const SPIF_SENDWININICHANGE = &H2


[解决办法]
http://download.csdn.net/detail/veron_04/3400339

读书人网 >VB

热点推荐