基本上我试图实现一个结合ToUnicode的WH_KEYBOARD_LL钩子...... 我知道这可能听起来很愚蠢..但我确实让它工作,特殊字符如:'“#¤%#!*'等等。但我正在玩代码来尝试修复口音。我最终意识到它不起作用(在互联网上阅读了很多内容之后)。
所以我觉得它现在已经做了,但是当我恢复原来的旧代码时,它再也无法工作了......
所以钩子本身正在工作(我至少得到了关键和向上的事件。)
问题在于虚拟键 - >字符转换,即在此方法中:
'This is the callback method from the hook
Private Shared Function Process(Code As Integer, wParam As IntPtr, lParam As IntPtr) As Integer
If Code = 0 Then
Dim KeyData As KeyData
KeyData = Marshal.PtrToStructure(lParam, KeyDataType)
Dim Down As Boolean
Dim Up As Boolean
Select Case wParam
Case 256, 260
Down = True
Case 257, 261
Up = True
End Select
If Down Then
Dim KeyState(255) As Byte
GetKeyboardState(KeyState)
Dim Key(0) As Char
ToUnicode(KeyData.vkCode, KeyData.scanCode, KeyState, Key, 2, KeyData.flags)
RaiseEvent KeyPress(New KeyPressEventArgs(KeyData.vkCode, Key(0)))
End If
End If
Return CallNextHookEx(0, Code, wParam, lParam)
End Function
然而奇怪的是,当窗口聚焦时,它会转换并输出特殊字符... 请帮帮我:)。
提前致谢!
编辑:我使用的P / Invokes:http://pastebin.com/iaL8dfSV