首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用当前键盘布局截取键盘输入

使用当前键盘布局截取键盘输入
EN

Stack Overflow用户
提问于 2009-07-22 09:44:20
回答 3查看 2.2K关注 0票数 1

我已经使用SetWindowsHookEx()函数实现了一个低级键盘钩子。它工作得很好,每次击键都会返回一个虚拟键码。我可以使用KeyInterop.KeyFromVirtualKey()将这个虚拟密钥代码转换为System.Windows.Input.Key。但目标是在当前键盘布局中获得与此虚拟键码相对应的符号。

例如,对于德国布局,我想将Key.Z设置为"Y“,将Key.Y设置为"Z”。

有人能帮上忙吗?

谢谢。

EN

Stack Overflow用户

发布于 2012-01-03 05:50:40

你应该看看这个方法GetKeyboardStateGetKeyboardLayoutMapVirtualKeyExToUnicodeEx

解决方案应该看起来像这样

代码语言:javascript
复制
byte[] keyboardState = new byte[256];
GetKeyboardState(keyboardState);
IntPtr handle = GetKeyboardLayout(0);
uint scanCode = MapVirtualKeyEx(VirtualKeyCode, 0, handle);
StringBuilder stringBuilder = new StringBuilder(2);

int nResultLower = ToUnicodeEx(VirtualKeyCode, scanCode, keyboardState, stringBuilder,
                                       stringBuilder.Capacity, 0, handle);

string output= string.Empty;
if (nResultLower != 0)
{
  output = stringBuilder.ToString();
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1164172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档