如何使用c ++发送unicode密钥(keybd_event)

时间:2010-09-16 12:49:09

标签: c++ c winapi sendkeys

我的朋友正在学习挪威语,我想创建一个全局热键程序,用于发送

等密钥
æ
ø
å

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

1 个答案:

答案 0 :(得分:4)

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