Witam. Tym razem przyszło mi się zmierzyć z hotkey'ami. Na ogół wydaje się nie być to zbytnim problemem, funkcja GetAsyncKeyState, trochę funkcji warunkowych w nieskończonej pętli. Jednak naszedł mnie tu problem, funkcja GetAsyncKeyState zwraca stan klawisza podanego jako parametr, jednak w pętli wykonuje się to sprawdzenie wiele razy w ciągu sekundy. Oznacza to, że przytrzymanie klawisza przez nawet bardzo krótki czas spowoduje wielokrotne wykonanie poleceń po wciśnięciu tego to przycisku. I teraz mam do was pytanie, jak można zrobić hotkey który wykryje naciśnięcie przycisku tylko w momencie jego pierwszego kliknięcia, nie zatrzyma on pętli, oraz zadziała nawet gdy program jest nieaktywny bądź nie posiada żadnego okna. Program który chcę napisać jest czymś w rodzaju specjalnego menadżera, którym można zarządzać wyłącznie poprzez hotkey'e.
Myślałem też by stworzyć wiele wątków (aktualnie posiadam dwa) dla każdego przycisku z osobna i w momencie wciśnięcia któregoś z przycisków byłby prosty "if" oczekujący na puszczenie przycisku po czym dopiero pętla sprawdzająca przycisk by się znowu uruchamiała. To oczywiście pożerałoby dużo zasobów i nie byłoby ekonomiczne. Szukałem dużo w google jednak wszystkie metody jakie znalazłem albo wymagały aktywnego okna, albo zatrzymywały mi pętlę do czasu puszczenia przycisku itd itd itd. Tak więc bardzo proszę was o pomoc, gdyż jest to dla mnie dość ważna sprawa.






