ToUnicode不返回特殊字符

时间:2014-12-01 21:04:59

标签: vb.net winapi

基本上我试图实现一个结合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

0 个答案:

没有答案