【问题标题】:How to send unicode keys with c++ (keybd_event)如何使用 c++ (keybd_event) 发送 unicode 密钥
【发布时间】:2010-09-16 21:58:52
【问题描述】:

我的朋友正在学习挪威语,我想制作一个全球热键程序,它可以发送诸如

之类的键
æ
ø
å

我的问题是 keybd_event 函数不允许我发送这些密钥,我似乎仅限于 virtual key codes 是否有其他函数可以使用或一些技巧来发送它们?

【问题讨论】:

    标签: c++ c winapi sendkeys


    【解决方案1】:

    您必须改用 SendInput。 keybd_event 不支持发送此类字符(除非它们已经在当前代码页中,例如在挪威计算机上)。发送å的一些示例代码:

    KEYBDINPUT kb={0};
    INPUT Input={0};
    
    // down
    kb.wScan = 0x00c5;
    kb.dwFlags = KEYEVENTF_UNICODE;
    Input.type = INPUT_KEYBOARD;
    Input.ki = kb;
    ::SendInput(1,&Input,sizeof(Input));
    
    // up
    kb.wScan = 0x00c5;
    kb.dwFlags = KEYEVENTF_UNICODE|KEYEVENTF_KEYUP;
    Input.type = INPUT_KEYBOARD;
    Input.ki = kb;
    ::SendInput(1,&Input,sizeof(Input));
    

    如果您不知道:在 Windows 上安装其他键盘布局并使用快捷方式在它们之间切换很容易。

    Lykke 直到!

    【讨论】:

    • 谢谢!效果很好,我以前尝试过这种方法一次,但我将 wScan 设置为 'æ' 并且它不起作用......我认为它会为我将其转换为十六进制:P 再次感谢!
    • 啊,注意如果你说 wScan = _T('æ');或 L'æ';这也有效,只是不必弄清楚它的十六进制代码。
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多