如何使用C#收集击键的时间信息?

时间:2013-11-25 04:18:45

标签: c# keystroke time-measurement

我想构建一个简单的C#Windows窗体应用程序来收集用户的击键数据。

基本上,用户需要输入长度为10的单词。我想记录每个键的保持时间,keydown到keydown时间以及相邻按键的键盘和键控(因此有10 + 9 + 9 = 28次测量)

有人能告诉我如何使用文本框事件捕获此信息吗?

提前致谢

1 个答案:

答案 0 :(得分:4)

您可以在KeyUp处理KeyDownTextBox个事件。您可以使用DateTime.Now获取当前时间戳。

存储您上次的KeyUpKeyDown个活动时间并添加如下测量值:

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