Имам програма, която използва 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, което показва, че бутонът е задържан?