WinAPI (czytanie z okna)

0

Witam! Znalazlem w googlach ciekawy artykul ktory przedstawia jak dzieki WinAPI wysylac komunikaty do "okien" w przykladzie jest jak zamknac 'kalkulator' (ten windowsowy).

No i teraz mam pytanie czy istnieje mozliwosc aby z innego programu zlapac ten kalkulator i z poziomu mojego programu wybierac liczby do policzenia ? Czyli wywolac klikniecie np. klawiszow "2 + 2".
Badz w polu "Edit" wpisac to co wybiore na moim programie ?.

I za tym ciagnie sie kolejne moje pytanie czy istnieje taka mozliwosc abym klikniete przyciski na kalkulatorze wyswietlilo u mnie w programie np. w Memo ?

Chodzi o to:

Robie uchwyt okna kalkulatora kolejnie na kalkulatorze kliam na przycisk "2" a w moim programie wyswietla sie w memo komunikat o nacisnieciu klawisza "2" z programu kalkulator.

Czy jest mozliwe aby cos takiego zrobic ?

Prosze o jakies porady i wskazowki z gory bardzo dziekuje!

0

Z przechwyceniem tego co wpisujemy w Kalkulatorze jest więcej kombinacji, bo to trzeba by
było robić wyszukiwanie w pamięci procesu lub chyba dllkę, a w niej Hook na SendMessage i
WM_COMMAND, a wysyłanie żądania wciskania klawiszy, a wcześniej pobranie ich listy, wraz
z uchwytami jak i uchwytu od Edita wyniku to już banał. Poszukał byś sam trochę w gogole,
to znalazł byś przykłady na wyszukiwanie uchwytów kontrolek i symulowanie klikania w jakiś
przyciśk z użyciem SendMessage. Program jest wprawdzie w VCL, lecz jeżeli chcesz mieć go
wyłącznie w WinAPI to sobie przerób samodzielnie, trochę roboty z tym i poza tym potrzeba
wtedy raczej użyć dynamiczniej tablicy przechowyjącej uchwyty - ale jest do zrobienia. A co
do sposobu wciskania klawiszy poprzez dwukrotne klikanie na ListBox, to tylko przykład i Ty
sam sobie możesz już zrobić lepsze rozwiązanie, na przykład utworzyć dynamicznie buttony
na formatcre albo coś innego. http://www.speedyshare.com/files/24427617/calc_control.rar
Ważne, że kod działa. Testowane pod XP z tamtejszym kalkulatorem, nie wiem czy pod W7,
Vistą czy innym ustrojstwem nazwa klasy okna kalkulatora będzie taka sama, ale to sobie z
użyciem TDWinInfo lub innego programu pokazujące dane okien - ustal sobie samodzielnie.

0

Oczywiscie dziala jak by sie tylko chcialo :). Dzieki olesio kolejny raz za odpowiedz. :)
Wlasnie googluje tylko moze po prostu zlych zapytan stosuje :].
Teraz pozostaje mi tylko rozpracowac z przechwyceniem tego co sie klika (na jaki button itp) ...:] wiec bede googlowal za tym dalej jednak jak by ktos byl w stanie naprowadzic badz dac jakas wskazowke bardzo bym sie cieszyl dziekuje z gory. :)

0

Wskazówkę Tobie już dałem, nie wiem czy to jest jedyne rozwiązanie, ale pisałem
hook na SendMessage, w tym przypadku na SendMessageW. Ech - niektórzy tutaj
nie są nieobeznani tylko niesamodzielni i leniwi. Zobacz poniższy kod, wszystko co
w nim jest czyli sposób hookowania funkcji (ja nie potrafię inaczej niż przez dll, bo
w przypadku próby zastosowania takiego kodu w tym samym programie program
się "sypie" a system potrafi "wykrzaczyć") znalazłem kiedyś na google. A i można
uruchomić tylko jedną kopię. Przechwycenie klawisza wciśniętego w Kalkulatorze,
odbywa się przez odbior wysłanego przez dllkę komunikatu WM_COPYDATA, ale z
parametrem dwData wynoszącym koniecznie 55555. To takie "perpetum mobile"
jakby, program sam się ze sobą komunikuje, ale nie miałem innego pomysły jak
można by to zrobić - jak ktoś ma to proszę piszcie. Ja jestem amatorem i wiem,
to co znajdę w google. Pod XP wszystko działa ok. Tylko należy mieć na uwadze,
że program przechwyci fizycznie wciskane buttony w kalkulatorze, a nie te same
operacje wykonywane przy użyciu klawiatury. Wtedy trzeba było by przechwycić
raczej inne funkcje, ale z tym już sobie pokombinuj samodzielnie w koncu, bo co
to za satysfakcja jak dostałeś gotowy kod na tacy. Rób z nim co chcesz - tylko w
swoich dalszych tworach wspomnij gdzieś o autorze oryginału, jeżeli można Cię o
to prosić. Kod na: http://www.speedyshare.com/files/24430215/calc_control.rar

0

Dzieki olesio :) pelen podziw dla Ciebie. Oczywiscie wspomne (szczerze mowiac chce przechwycic calkowicie inny program tyle ze wlasnie oparty na przechwyceniu klikania a kalkulator kazdy ma na windowsie wiec dalem taki przyklad) :).

0

Spoko, jeżeli jest to program dla Windowsa bez jakiś tam Netów i innych badziewnych
frameworków co trzeba specjalnie doinstalowywać, żeby program działał w ogóle. Oraz
nie jest to gra pod DirectX, to najpewniej korzysta z jakiś funkcji API, ktore można - z
powodzeniem jak widzisz, przechwycić i odpowiednio obsłużyć zakładając na nie Hook.

0

Olesio mam do Ciebie prosbe moglbys zrobic re-upload tych plikow ? Niestety potracilem wszystkie pliki jakie mialem.

0

Oczywiście, że mogę. Teraz wrzuciłem na MediaFire, bo tam założylem
konto i link nie wygaśnie: http://www.mediafire.com/?rxalzlz0778lx9t

0

Dziekowac slicznie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1