[Delphi] Sterowanie innym programem

0

Próbowałem już w Newbie, Delphi/Pascal i brak odpowiedzi, więc zamieszczam to tutaj. Chodzi o funkcję SendMessage(), ew. PostMesage(). Piszę program, który ma otwierać inny program, na którego kod nie mam wpływu. Przechwytuję uchwyt okna i... co dalej? Program ten (CPU Grabber) składa się z 3 przycisków (Start, Stop, Close) oraz z suwaka (zakres: 1-99). Funkcja PostMessage brzmi tak:

PostMessage(HWND,Msg,wParam,lParam).

Co mam podać pod Msg, wParam i lParam, jeżeli chcę, aby program ustawił suwak na podaną przeze mnie wartość i zasymulował wciśnięcie przycisku Start w tymże programie. Z góry dziękuję za pomoc. Myślę, że szczegółowo przytoczyłem problem.</delphi>

0

Ja sie dopisze do postu ...

Sam szukalem takiego czegos i sam pisalem na forum ale nie uzyskalem odpowiedzi ... wiec moze teraz ktos opdpisze [???]

Moze sa programy do takich celow ... [???]

0

Ja również pisałem posty w dziale Newbie, lecz nie uzyskałem dokładniejszych informacji. Czy ktoś wie jak to można zrobić?

0

A ja <ort>ju.sz</ort> chyba coś takiego robiłem :/
Tylko dość dawno :-| a że od ponad prawie 3/2 roku nie pisze w Delphi nie pamiętam tego dokładnie :( ...
Ale <ort>pamientam </ort>gdzie to znalazłem >> w WinAPI help :)
Jak znajdę tego help'a, albo ten program (w którym tego <ort>urzywałem),</ort> albo podobny temat w MSDN'ie to <ort>napisę </ort>odp ;)

---==< 'ort!' są bez sensu >==---
np ten kod przecież jest poprawny:

function <ort>jusz</ort> = <ort>pentle(<ort>konec</ort>,</ort> <ort>urzyte);</ort>
for <ort>kture</ort> = 1:konec;
<ort>jusz</ort> = sum(ktore:<ort>urzyte);</ort> 
end;

A niech mi ktos bez zagladania powie o <co?> tu chodzi :>

// popraw orty!!! poza tym sam jesteś bez sensu - błędy językowe nie przejdą także w kodzie, to chyba logiczne - Ł

0

Jak masz uchwyt do okna, to

EnumChildWindows()

-> znajdujesz np. Button i wysyłasz:

SendMessage(uchwyt_buttona, BM_CLICK, 0, 0);

albo jeśli chcesz pobrać wartość suwaka, to ślesz:

int pozycja = SendMessage(uchwyt_suwaka, SBM_GETPOS, 0, 0);

Wszystko znalazłem po odpaleniu pomocy! Nigdy tego nie robiłem!
Czy naprawdę tak ciężko poświęcić 5 minut (ja szukałem info może pół minuty...) i samemu znaleźć odpowiedć? ech...

co to za nietuzinkowy problem...

0

znajdujesz np. Button

W jaki sposób mam to zrobić? Co mam podać za drugi i trzeci parametr tej funkcji? Czytałem helpa i jakoś nie mogę się w nim doczytać co mam tam wpisać. Czy ktoś mógłby przedstawić jakiś niewielki przykładzik? Bardzo mi by to pomogło. Z góry dziękuję.

0

To użyj FindWindowEx jak tamtej nie kumasz - ona też wyszukuje ChildWindows.
Nawet ta się lepiej nada do tego.

w pomocy (win32.hlp) jest wszystko jak na dłoni

0

Kombinuję z funkcją SendMessage(). Przyciski obsługuje ona prawidłowo, mam jednak problem z suwakiem. Nie jest to Scrollbar, a Trackbar, więc przedrostek SBM_ zmieniłem na TBM_ (wg msdn.com). Napisałem taki kod:

hTrackBar := FindWindowEx(Uchwyt,0,'msctls_trackbar32',nil);
pos := SendMessage(hTrackBar, TBM_GETPOS,0,0);

Gdzie "Uchwyt" to uchwyt do rodzica, a "pos" to integer.
Wydawałoby się, że wszystko jest w porządku, jednak debugger wywala mi błąd:
[Error] Unit1.pas(253): Undeclared identifier: 'TBM_GETPOS'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Uchwyt do Trackbar'a program wyszukuje poprawnie [sprawdzałem funkcją ShowWindow(hTrackBar,SW_HIDE) i działa]. Co jest źle??? Z góry dzięki.

0

Jak ktos chce dla nauki sterowac innym programem z poziomu delphi to niezbyt moge pomoc, jesli ktos chce konkretny problem rozwiazac polecam Auto It - tym mozna baaardzo latwo sterowac innymi programami. [green]

0

[Error] Unit1.pas(253): Undeclared identifier: 'TBM_GETPOS'
Mam nadzieję, że dołączyłeś "commctrl.h", gdzie znajduje się definicja komunikatu?

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