为了账号安全,请及时绑定邮箱和手机立即绑定

C#如何将虚拟键码转换为char?

C#如何将虚拟键码转换为char?

C#
函数式编程 2019-12-04 12:38:50
我正在尝试将虚拟键码映射到char。我的代码使用ProcessCmdKey来监听WM_KEYDOWN,这使我可以访问所按下的键。例如,当我按单引号时,我会得到一个键222,我想将它映射到代表...您猜对了...单引号的keychar 39。我的开发环境是:-.net Framework 2.0-UserControl放置在很多地方你知道这个问题的答案吗?
查看完整描述

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);

  }

感谢您的关心...并享受!


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 592 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信