我正在开发一种软件,该软件可以保存同意的用户的键盘和鼠标输入,以完全按照跟踪错误的方式重现它们。我可以说大部分都可以使用,但是当我重现一些键时,我有一些锻炼的细节。
我目前正在使用.NET著名的SendKeys来进行操作,并且效果很好。
SendKeys.SendWait(key);
我传递的key
字符串还可以处理带有特殊键的多输入,例如 Shift + Ctrl + Left 。对于此示例key = "+^{LEFT}";
但是我保存用户输入的方式开始使事情变得更加棘手,因为按键可以根据按下的控制键取多个值。通常,所有非字母数字字符。
例如,如果用户键入第一个数字键。 (可以在QWERTY键盘上输入“ 1”或“!”的字符串)我在e.KeyCode.ToString()
事件中注册了从此行private async void OnKeyUp(object sender, KeyEventArgs e)
生成的“ D1”字符串。与此同时,我注册了组合键,例如Caplock,Shift,Alt和Control,因此我可以精确地再现用户键入的字符。这些数据以字符串形式存储在json文件中。
但是在这里,我被困住了,如何告诉SendKeys
用户键入了“ D1”,并使用它输入了一些控制键?据我所知,SendKeys
文档中的特殊键数量非常有限(实际上不会产生字符的键)。我可以做一个很大的开关并添加很多条件,但这听起来像是很多肮脏的工作,并且对于不同类型的键盘也可能是一个问题。有更好的解决方案吗?