如何使用SendInput发送斯堪的纳维亚字母
我正在尝试创建一个虚拟键盘,它使用SendInput方法模拟键盘,如下所示:
public static void SendKeyDown(System.Windows.Forms.Keys key) { INPUT k = new INPUT(); k.type = (int)InputType.INPUT_KEYBOARD; k.ki.wVk = (short)key; k.ki.dwFlags = (int)KEYEVENTF.KEYDOWN; k.ki.dwExtraInfo = GetMessageExtraInfo(); SendInput(1, new INPUT[] { k }, Marshal.SizeOf(k)); }
但我无法从Keys -enumeration中找到斯堪的纳维亚字母Ä,Ö和Å。 如何使用SendInput方法发送这些字母?
您可以使用KEYEVENTF_UNICODE
发送Unicode字符。
k.type = (int)InputType.INPUT_KEYBOARD; k.ki.wScan = 'ö'; k.ki.wVk = 0; k.ki.dwFlags = (int)KEYEVENTF.UNICODE | (int)KEYEVENTF.KEYDOWN; k.ki.dwExtraInfo = GetMessageExtraInfo();
这比使用Oem3
等的解决方案更便携,其分配的字符将根据应用程序执行平台的文化而变化。
(其他P / Invoke签名可以在我的其他答案中找到。)
自己找到解决方案
Oem3 =ö,Oem7 =ä,Oem6 =å