我正在尝试创建一个虚拟键盘,它使用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方法发送这些字母?
答案 0 :(得分:4)
您可以使用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签名可以在我的其他answer中找到。)
答案 1 :(得分:0)
自己找到解决方案:
Oem3 =ö,Oem7 =ä,Oem6 =å