Я пытаюсь сделать систему, которая сначала записывает, когда вы нажимаете, а потом выдает список задержек между двумя нажатиями мыши из записи, это очень сложно объяснить, но, возможно, вы поймете, когда посмотрите на код. Текущий код таков:
bool recToggle = false;
public static bool stopbool = false;
public static bool mouseBool = false;
int recDelay = 0;
private void button1_Click(object sender, EventArgs e)
{
if (recToggle)
{
button1.Text = "Start Recording";
//REC IS OFF!
//MessageBox.Show(list.Count.ToString()); //show how many items
//list.ForEach(Console.WriteLine); //print the list
recTimer.Stop();
recToggle = false;
}
else
{
button1.Text = "Stop Recording";
//REC IS ON!
recTimer.Start();
recToggle = true;
}
}
private void recTimer_Tick(object sender, EventArgs e)
{
recTimer.Interval = 1;
if (mouseBool)
{
recDelay = recDelay + 1;
}
if (stopbool)
{
stopbool = false;
list.Add(recDelay);
recDelay = 0;
}
}
public List<int> list = new List<int>();
//hook is working but I didnt put whole code here to make this bit smaller
public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
{
//mouse down
if (mouseBool)
{
mouseBool = false;
}
else
{
mouseBool = true;
stopbool = true;
}
}
if (nCode >= 0 && MouseMessages.WM_LBUTTONUP == (MouseMessages)wParam)
{
//mouse up
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Ошибок не выдает, но номера списка задержек намного меньше, чем должны быть. Интервал таймера составляет 1 мс, поэтому, если вы нажмете, отпустите (1 секунду) нажмите снова, значение в списке должно быть 1000, теперь значения такие, как 1, 1, 4, 2, и это почти невозможно нажать на это быстрый. Что не так с моим кодом?
DateTime start = DateTime.Now;
, а затем, когда вы остановитесь, получитьTimeSpan elapsed = DateTime.Now - start;
. - person Blorgbeard   schedule 30.01.2018mouseBool
иstopbool
в true в одном и том же месте. Если таймер запущен, он увеличитrecDelay
, а затем сразу же добавит его в список. Я подозреваю, что использованиеDateTime
упростило бы ваш код и облегчило бы его отладку. - person Blorgbeard   schedule 30.01.2018Console.WriteLine
или несколько точек останова. - person Blorgbeard   schedule 30.01.2018