[…] czy ta aplikacja została jakoś celowo napisana aby nie dało się uruchamiać przycisków klawiaturą, tylko myszką?
Może tak być – aplikacja mogła zostać napisana w taki sposób, aby nie dało się obsługiwać interfejsu klawiaturą. Jednak nie jest to jakieś zabezpieczenie przed automatami czy botami – po prostu twórcy aplikacji mogli użyć kontrolek dla przycisków, które nie posiadają uchwytu. W Delphi może to być kontrolka pośrednio lub bezpośrednio dziedzicząca np. z klasy TGraphicControl
. Tyle że to nieco inny przypadek, dlatego że Ty masz uchwyt przycisku, a więc owy przycisk nie jest kontrolką graficzną.
Jeśli chodzi o faktyczne zabezpieczenia, to takowych się nie implementuje, dlatego że raczej niemożliwe jest odróżnienie komunikatów systemowych (które wysyła system) od tych użytkownika (wysyłanych z tej samej aplikacji lub jakiejkolwiek zewnętrznej). Walka z wiatrakami, a i sensu to nie ma.
A może się nie da nic zrobić i należy próbować z komunikatami do przycisków myszy?
Gdybyś kiedyś miał problem z samym pobraniem uchwytu, to bierz pod uwagę wyżej opisany scenariusz.
To i tak nie zmienia faktu, że możesz klikać w przyciski nawet wtedy, gdy masz do czynienia z kontrolkami graficznymi. Wystarczy ustawić kursor w odpowiednim miejscu i zasymulować kliknięcie, uprzednio upewniając się, że okno zawierające docelowy przycisk faktycznie znajduje się na samej górze stosu okien.