3 回答
TA贡献1836条经验 获得超5个赞
是的,我确实使用了该MapVirtualKey方法。但是我期待更多有关如何使用它的细节:DllImport要使用的指令,enum特定于字符映射的指令等。
我不喜欢这些答案,在Google上停留大约5秒钟,然后提出一个解决方案:真正的挑战是将所有内容放在一起,而不必浪费大量时间在无样本的MSDN页面或其他编码论坛上为了得到你的答案。没有冒犯的根基,但是您的回答(即使是很好)也没问题,因为即使在论坛上发布我的问题之前我也有这个答案!
因此,您去了,我要发布我想要的东西-一个现成的C#解决方案:
1-将此指令放在您的类中:
[DllImport("user32.dll")]
static extern int MapVirtualKey(uint uCode, uint uMapType);
2-像这样检索您的字符:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
if (msg.Msg == WM_KEYDOWN)
{
// 2 is used to translate into an unshifted character value
int nonVirtualKey = MapVirtualKey((uint)keyData, 2);
char mappedChar = Convert.ToChar(nonVirtualKey);
}
return base.ProcessCmdKey(ref msg, keyData);
}
感谢您的关心...并享受!
- 3 回答
- 0 关注
- 619 浏览
添加回答
举报