c++ - 如何使用 C++ (keybd_event) 发送 unicode 键

标签 c++ c winapi sendkeys

我的 friend 正在学习挪威语,我想制作一个全局热键程序来发送诸如

æ
ø
å

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

最佳答案

您必须改用 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 直到!

关于c++ - 如何使用 C++ (keybd_event) 发送 unicode 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3726812/

相关文章:

c - 如何从 C 函数将树遍历作为数组返回

multithreading - 我可以获得持有 CriticalSection 的线程的 id 吗?

c++ - glDrawElements 仅导致 GL_PATCHES 的访问冲突

c++ - 对 STL 拷贝的推力无法按预期工作

我可以修改gcc内联汇编中的输入操作数吗

c - for 循环中的条件表达式无效

c++ - IContextMenu3 HandleMenuMsg2 从未被调用

检查 API 是否受到监控( Hook ?)

c++ - 调试 Prime 程序

64位机器上的c++指针