C++ 如何使用c++;(keybd_事件)
我的朋友正在学习挪威语,我想制作一个全球热键程序,它可以发送诸如C++ 如何使用c++;(keybd_事件),c++,c,winapi,sendkeys,C++,C,Winapi,Sendkeys,我的朋友正在学习挪威语,我想制作一个全球热键程序,它可以发送诸如 æ ø å 我的问题是keybd_事件函数不允许我发送这些密钥,我似乎被限制在以下问题上:我是否可以使用其他函数或发送密钥的技巧?您必须使用SendInput。keybd_事件不支持发送此类字符(除非它们已在当前代码页中,如在挪威计算机上)。发送å的一段示例代码: KEYBDINPUT kb={0}; INPUT Input={0}; // down kb.wScan = 0x00c5; kb.dwFlags = KEYEVE
æ
ø
å
我的问题是keybd_事件函数不允许我发送这些密钥,我似乎被限制在以下问题上:我是否可以使用其他函数或发送密钥的技巧?您必须使用SendInput。keybd_事件不支持发送此类字符(除非它们已在当前代码页中,如在挪威计算机上)。发送å的一段示例代码:
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上安装其他键盘布局并使用快捷方式在它们之间切换很容易
莱克泰尔 谢谢!很好地工作,我以前试过一次这种方法,但我把wScan设为“æ”,结果不起作用。。。我以为它会为我把它转换成十六进制:P再次感谢!啊,注意到如果你说wScan=_T(‘æ’);或“æ”;这也行,只是不需要找出它的十六进制代码。