Tutaj @marogo opisał to idealnie. Wszystkie potrzebne informacje potrzebne do dalszego samodzielnego ogarnięcia tematu zostały podane. Dlatego pozwoliłem sobie zaplusować oraz zatwierdzić ten post już za autora wątku. Bo niestety często ludzie tego nie robią sami. Poza tym mam "deżawi". Ostatnio był tutaj taki wątek, gdzie nawet podawałem przykład wykrywania czy myszka jest w obrębie naszej aplikacji czy poza nią. Od siebie dodam tylko, że hooki lowlevelowe na klawiaturę czy mysz wymagają uruchomienia naszego programu na prawach Administratora. Ma to znaczenie przy nowych systemach wyposażonych we włączony mechanizm UAC. A więcej na temat hooków można poczytać oczywiście również na MSDNie. Wspomne tylko również o innym rozwiązaniu. Jeżeli zależy nam tylko na wykryciu naciśnięcia klawisza na klawiaturze lub przycisku klawiatury, a nie jego przechwycenia i zablokowania działania - to możemy zrobić takie coś odczytując rezultat funkcji GetAsyncKeyState
w timerze lub lepiej w wątku z krótkim interwałem na przykład rzędu 100 ms. Oczywiście funkcja GetAsyncKeyState
oczytuje fizycznie przycisk myszki, a nie logicznie. O czym informują na MSDNie. Ale w google znajdziesz również informacje w jaki sposób sprawdzić czy przyciski myszki nie są zamienione w ustawieniach, choćby dla osoby leworęcznej.