WM_CHAR发送unicode字符

时间:2014-08-13 09:12:39

标签: windows winapi unicode keyboard-hook

我正在挂钩windows WM_CHAR消息。当我替换(挂钩)给定的char代码到像'a'这样简单的东西时,我输入的每个字符都变成了一个。那没关系。但是,当我试图发送unicode字符时,如ф('ф'.charCodeAt(0)给出1092,所以我在代码中将'a'替换为1092),所有字母都变为D.此外,当我在每个文本编辑器中输入Alt + 1092我得到D.为什么?我可以使用WM_CHAR发送unicode char吗?文档说“WM_CHAR消息使用Unicode转换格式(UTF)-16。”。

LRESULT CALLBACK Proc(int code, WPARAM wParam, LPARAM lParam)
{
    if(code >= HC_ACTION)
    {
        MSG* msg=(MSG *)lParam;
        if(msg->message==WM_CHAR)
        {
            int charCode = msg->wParam;
            if(IsCharLower(charCode))
            {
                charCode = 1092;
                msg->wParam=(WPARAM)charCode;
            }
        }
    }

    return CallNextHookEx(hHook, code, wParam, lParam);
};

0 个答案:

没有答案