在同一个Form中,有几个文本框和几个按钮,现在不管光标在哪里,只要键盘按下,抓住Tab键,我试过用
Form_KeyDown ,按键时没有触发,请教各位,有什么办法吗? 谢谢了..
Form_KeyDown ,按键时没有触发,请教各位,有什么办法吗? 谢谢了..
解决方案 »
- 在VS2005中使用serialports如何实现数据16进制输入和输出?
- vb6.0+access 时间相加问题!急
- vb6编的dll文件,需要注册吗?如果在项目决定这个dll是否需要注册使用呀?dll文件有不同的分类吗?
- 文件操作的问题,为什么读取500个字符后,文件的位置不是500
- vb写word文档DLL错误!!
- 局域网验证问题???分不够可以再加
- 如何用代码设置imagecombo控件内容框里的图片(不是下拉部份)
- 如何生成一个临时表
- 關於用VB匯出Excel,Excel中含圖表Chart
- 老板让写一个能从扫描仪接受信息的东东,那位大哥作过呀:(
- 今天写代码的时候遇到的两个棘手问题
- 江湖救急!为什么windows会关闭我的程序
me.keypreview=true
Private Sub Form_Load()
'set a keyboard hook
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
'remove the windows-hook
UnhookWindowsHookEx hHook
End SubOption Explicit'In a module
Public Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
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
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public hHook As Long
Public Const WM_KEYUP = &H101Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lstrFlag As String
'if idHook is less than zero, no further processing is required
If idHook < 0 Or idHook = 3 Then
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
lstrFlag = Left$(Format$(DEC_to_BIN(lParam), String(32, "0")), 1)
If lstrFlag = "0" Then 'down
If wParam = vbKeyTab Then
Form1.Print "Tab down ..."
End If
Else 'up
If wParam = vbKeyTab Then
Form1.Print "Tab up ..."
End If
End If
'call the next hook
KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function
Public Function DEC_to_BIN(Dec As Long) As String
DEC_to_BIN = H_To_B(Hex$(Dec))
End Function
Public Function H_To_B(ByVal Hex As String) As String
Dim i As Long
Dim B As String
Hex = UCase(Hex)
For i = 1 To Len(Hex)
Select Case Mid(Hex, i, 1)
Case "0": B = B & "0000"
Case "1": B = B & "0001"
Case "2": B = B & "0010"
Case "3": B = B & "0011"
Case "4": B = B & "0100"
Case "5": B = B & "0101"
Case "6": B = B & "0110"
Case "7": B = B & "0111"
Case "8": B = B & "1000"
Case "9": B = B & "1001"
Case "A": B = B & "1010"
Case "B": B = B & "1011"
Case "C": B = B & "1100"
Case "D": B = B & "1101"
Case "E": B = B & "1110"
Case "F": B = B & "1111"
Case Else
B = B & Mid(Hex, i, 1)
End Select
Next i
While Left(B, 1) = "0"
B = Right(B, Len(B) - 1)
Wend
H_To_B = B
End Function