我想构建一个简单的C#Windows窗体应用程序来收集用户的击键数据。
基本上,用户需要输入长度为10的单词。我想记录每个键的保持时间,keydown到keydown时间以及相邻按键的键盘和键控(因此有10 + 9 + 9 = 28次测量)
有人能告诉我如何使用文本框事件捕获此信息吗?
提前致谢
答案 0 :(得分:4)
您可以在KeyUp
处理KeyDown
和TextBox
个事件。您可以使用DateTime.Now
获取当前时间戳。
存储您上次的KeyUp
和KeyDown
个活动时间并添加如下测量值:
private DateTime? keyUpTime = null;
private DateTime? keyDownTime = null;
private List<double> keyDownKeyUpMeasurements = new List<double>();
private List<double> keyDownKeyDownMeasurements = new List<double>();
private List<double> keyUpKeyDownMeasurements = new List<double>();
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
DateTime prevKeyDownTime = keyDownTime;
keyDownTime = DateTime.Now;
if (prevKeyDownTime != null)
{
keyDownKeyDownMeasurements
.Add(keyDownTime.Subtract(prevKeyDownTime).TotalMilliseconds);
}
if (keyUpTime != null)
{
keyUpKeyDownMeasurements
.Add(keyDownTime.Subtract(keyUpTime).TotalMilliseconds);
}
}
private void textBox_KeyUp(object sender, KeyEventArgs e)
{
keyUpTime = DateTime.Now;
keyDownKeyUpMeasurements
.Add(keyUpTime.Subtract(keyDownTime).TotalMilliseconds);
}