У меня есть программа, которая использует сообщения Windows, чтобы узнать, нажата ли кнопка или нет:
IntPtr GetMsg(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
if ((Keys)vkCode == Keys.SomeKey)
{
/*Functions*/
}
}
}
Кнопки можно нажимать где угодно, и программа все равно их обработает.
Проблема в том, что всякий раз, когда пользователь удерживает определенную кнопку, функция, которую выполняет кнопка, повторяется много раз за короткий промежуток времени. И хотя функция не такая уж тяжелая - она все же заставляет компьютер зависать или работать медленно на пару секунд.
Если бы я знал, что кнопка удерживается, я бы просто выполнил эту функцию один раз.
Есть ли флаг или что-то в сообщении Windows, указывающее, что кнопка удерживается?