作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个虚拟键盘,它使用 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 枚举中找到斯堪的纳维亚字母 Ä、Ö 和 Å。如何使用 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 签名可以在我的另一个 answer 中找到。)
关于c# - 如何使用 SendInput 发送斯堪的纳维亚字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442659/
我是一名优秀的程序员,十分优秀!