Program sterujący drugim programem. Wykonalne?

Dzień dobry!

Zawsze możesz emulować wciśnięcie klawisza / kliknięcie myszą, czyli

  1. focus na aplikację

  2. emulacja kliknięcia

  3. 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 :wink:

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ł.

http://www.vbforums.com/showthread.php?345259-Use-API-to-programmatically-click-button-of-another-app

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.