Dzień dobry!
Zawsze możesz emulować wciśnięcie klawisza / kliknięcie myszą, czyli
-
focus na aplikację
-
emulacja kliknięcia
-
powrót focusa na element który był na początku
To co robisz nie jest najlepszym rozwiązaniem. Foobar udostępnia API do budowania własnych rozszerzeń, w oparciu o nie powstał np. komponent do kontroli przez http (web service). Wykorzystuje go większość aplikacji do zdalnej kontroli nad tym otwarzaczem, możesz i ty.
Link do wtyczki - http://www.floatec.de/downloads/
Przykład użycia - https://play.google.com/store/apps/details?id=com.cav.foobar2000controller
Z innymi programami jest podobnie. Bardzo dużo aplikacji, np. cały pakiet Office, umożliwia rozszerzania za pomocą wtyczek. Niektóre programy (np. XBMC) same z siebie udostępniają już web service’y. Inne można kontrolować z wiersza poleceń. Na pewno grzebanie w pamięci działającego programu nie jest dobrym rozwiązaniem. Zresztą nie do końca wiem na jakiej zasadzie to działa przy chronionej pamięci w systemie?
@hindus Pomysł który podałeś wpadł mi do głowy jako pierwszy, niestety zapomniałem dodać, ze chciałbym również pobierać informacje z programu.
@kowgli No tak, faktycznie jest i API, ale foobar był przykładem. Istnieje jakiś sposób na aplikację która nie posiada obsługi?
Ollydbg i jazda
Kiedyś na windowsxp wykrywało się uchwyt okienka (każdy przycisk to inne okienko) i przesyłało się do niego komunikat. To może działać i dzisiaj dla większości aplikacji. Ogólnie zainteresuj się FindWindowEx i SendMessage. Kiedyś był spy++ (SPYXX.exe), dzięki któremu można było podejrzeć przesyłane komunikaty, ale chyba umarł.
Jest jeszcze AutoIT. Pozwala na wygodne pisanie skryptów sterujących innymi aplikacjami. W zestawie znajdziesz też narzędzie ujawniające uchwyty do elementów sterujących.
Od siebie polecam Sikuli.