C# - 将KeyPress转换为扫描码/扫描码到密钥名称

时间:2011-09-24 08:12:03

标签: c# winforms .net-2.0

我有一个WinForm应用程序,我需要捕获一个KeyPress并为其获取扫描码。除此之外,我需要将现有的扫描码转换为关键名称(通过预先转换为虚拟键?)有没有办法实现这一目标?

2 个答案:

答案 0 :(得分:0)

第一部分是可能的,但很棘手,因为多个虚拟键(VK)代码将映射到相同的扫描码(取决于键盘shift / ctrl / alt状态)。

我不确定你的“关键名称”是什么意思,但是如果你指的是物理键盘布局那么,为了你的下一步,你需要根据标准物理做一些关于键位置的假设键盘布局(101键,102键等)。

有关示例代码和更详细的说明,请参阅我对this question的回答。

答案 1 :(得分:0)

如果仍然需要,可以使用Reflection进行私人成员访问。我知道这不是一个好主意,接口可以在下一版本中进行更改,但它适用于.Net Framework 4.6

import React from "react";
import { connect } from "react-redux";
import { minusAction, plusAction, resetAction } from "../actions/clickerAction";
function App(props) {
  return (
    <div align="center" className="App">
      <h1>{props.number}</h1>
      <button
        onClick={() => {
          props.minusAction(props.number);
        }}
      >
        -
      </button>
      <button
        onClick={() => {
          props.resetAction(props.number);
        }}
      >
        Reset
      </button>
      <button
        onClick={() => {
          props.plusAction(props.number);
        }}
      >
        +
      </button>
    </div>
  );
}
const mapStateToProps = state => ({
  number: state.clickerReducer.number
});
export default connect(mapStateToProps, {
  minusAction,
  plusAction,
  resetAction
})(App);