[ bizzy86 @ 04.10.2006. 18:14 ] @
Da li postoji neki kod za aktiviranje buttona u nekom drugom programu, recimo da na se u odredjeno vreme pokrene winamp (aktivira play)... Hvala unapred |
[ bizzy86 @ 04.10.2006. 18:14 ] @
[ Nemanja Avramović @ 04.10.2006. 19:11 ] @
Možeš sa FindWindow (FindWindowEx) da tražiš handle prozora/elemenata prozora, pa da se zezaš ili ako određeni program ima podršku za "saradnju sa drugim programima"
![]() [ bizzy86 @ 04.10.2006. 20:54 ] @
Mislio sam konkretno na program koji ce mi snimati tv program u odredjeno vreme posto default program koji dolazi uz karticu moze da snima ali nema vremenski tajmer koji bi to radio. Mislio sam da se u odredjeno vreme aktivira dugme za snimanje.... Kartica je inno, stara jedno 5 godina ali za drugu trenutno nemam para ... :)
Pokusacu sa tom funkcijom. Imas neki source kako bi to trebalo da izgleda pa da vidim kako to otprilike treba da izgleda? [ Nemanja Avramović @ 05.10.2006. 01:35 ] @
Nemam nikakav kod. As a matter of fact, najdalje što sam ja stigao je FindWindow, odnosno našao sam handle prozora drugog programa. Handle neke kontrole u tom prozoru nisam nikada uspeo da nađem, mada nisam ni pokušavao nešto preterano...
[ Vladica Savić @ 05.10.2006. 06:41 ] @
Ajd ako neko ima vec gotov kod za ovako nesto nek postuje (ako hoce naravno). Ovo i mene zanima
![]() Pozdrav svima, citamo se ![]() [ savkic @ 05.10.2006. 10:05 ] @
> Da li postoji neki kod za aktiviranje buttona u nekom drugom programu, recimo da
> na se u odredjeno vreme pokrene winamp (aktivira play)... > Pokusacu sa tom funkcijom. Imas neki source kako bi to trebalo da izgleda pa > da vidim kako to otprilike treba da izgleda? U takvim situacijama je prvi korak istraživanje programa koji se hoće kontrolisati. Startuje se WinSight32 ili Spy++, i dalje se npr. pregledaju poruke koje prozor dobija kao reakciju na startovanje opcija (ako je klasičan button onda su to WM_COMMAND) i pokuša se simuliranje istih. WinAmp nisam nikada gledao, ali mi ne deluje da koristi klasične win button kontrole, već slike dugmadi. Ako je zaista tako, onda opet svakako treba ispitati poruke koje se šalju i videti postoji li neko pravilo. Ideja za realizaciju je da se vidi relativni položaj dugmeta u odnosu na početak prozora programa a kasnije u kodu na osnovu trenutnog položaja prozora, simulira pritisak miša na poziciju na kojoj je slika. [ bizzy86 @ 05.10.2006. 13:59 ] @
Meni bi bilo i dovoljno da se u prozoru tog programa zvekne enter jer je hotkey za rec enter...
[Ovu poruku je menjao bizzy86 dana 06.10.2006. u 01:03 GMT+1] [ Nemanja_666 @ 06.10.2006. 07:24 ] @
Naj laksi nacin imitiraj kretanje misa i klik SetMousePos itd...
[ savkic @ 06.10.2006. 08:38 ] @
> Meni bi bilo i dovoljno da se u prozoru tog programa zvekne enter jer je
> hotkey za rec enter... Nije tesko, pozove se API funkcija koja simulira pritisak na taster, keybd_event, primeri su slati pre desetak dana. [ Vladica Savić @ 09.10.2006. 06:32 ] @
Jos nema ni jedan Source za ovo ???
Hajde ljudi, ako neko ima nek postuje... ![]() [ savkic @ 09.10.2006. 07:33 ] @
> Jos nema ni jedan Source za ovo ??? > Hajde ljudi, ako neko ima nek postuje... Dobio si algoritam, ne možeš očekivati da neko uradi program za tebe. Kreni da radiš pa ako negde zaglaviš, pitaj. [ markic @ 09.10.2006. 07:38 ] @
Citat: bizzy86: Mislio sam konkretno na program koji ce mi snimati tv program u odredjeno vreme posto default program koji dolazi uz karticu moze da snima ali nema vremenski tajmer koji bi to radio. Mislio sam da se u odredjeno vreme aktivira dugme za snimanje.... Kartica je inno, stara jedno 5 godina ali za drugu trenutno nemam para ... :) Nemoj da se mucis kada postoje WinDVR i PowerVCR. [ bizzy86 @ 10.10.2006. 01:01 ] @
Hvala svima, na kraju sam i ja nasao gomilu programa koji rade sa svim tipovima kartica...
[ Vladica Savić @ 10.10.2006. 06:50 ] @
Citat: savkic: > Jos nema ni jedan Source za ovo ??? > Hajde ljudi, ako neko ima nek postuje... Dobio si algoritam, ne možeš očekivati da neko uradi program za tebe. Kreni da radiš pa ako negde zaglaviš, pitaj. Meni licno to i ne treba, ali kao sto sam pre naveo zanima me. Nisam ja ni trazio da meni neko odradi ceo program, vec da ako neko vec ima deo tog koda da postuje ovde ako hoce... ![]() Nadam se da smo se razumeli... ![]() [ Srdjan_exe @ 22.10.2006. 15:28 ] @
Meni je takodje interesantno ovo pitanje kontrole drugih aplikacija iz svoje aplikacije,
i koliko vidim naveli ste dva nacina da se ovo radi, prvi preko simulacije aktivnosti misa i tastature (ili bilo kojih drugih Input uredjaja), i drugi nacin da se pomocu nekih pomenutih alata prati sta program i s cime radi (primer sa spy-em i WM_COMMAND) pa se komande direktno salju programu preko tih funkcija ili varijabli. Mislim da prvi nacin samo na oko izgleda jednostavniji, ali bih kad god je to moguce koristio drugi (lower-level) nacin, izgleda mi pouzdanije (zato sto je mnogo neposredniji). Hocu reci, mnogo vise i kvalitetnije mozes uraditi ako znas sa kojim varijablama ili funkcijama doticni program operise (bukvalno, mozes raditi sta ti padne na pamet). Neki programeri (kao oni iz WinAmp) su spremni da odredjene funkcije i varijable stave korisniku / programeru na raspolaganje pa je kod njih lakse jer se ne moras zezati sa kojekakvim spy alatima. Ono sa simulaciijom bih radio samo ako je nesto manje bitno, jednostavno, itd. Evo samo jedan primer problema toga sa simulacijom. Recimo odredis relativan polozaj dugmeta "Play" u nekom plejeru u odnosu na gornju levu ivicu prozora. Ok. Medjutim u trenutku kada se pozove tvoja funkcija za klik, eto bas tada se PREKO TOG PLEJERA na desktopu pojavi nekakav pop-up prozor drugog programa (recimo, firewall ili anti-virus) i onda tvoja funkcija klikne na neko dugme u tom programu ("allow" u zone-alarmu :)) ... ovo je banalan primer i zato kazem da ovo sa simulacijom samo izgleda jednostavno ali ako se ne misli na milion drugih nepredvidjenih okolnosti (mogao bih navesti bar jos deset), moze da se desi svasta, dok je operisanje direktno sa varijablama programa egzaktno i mnogo "urednije".... Recimo ako hoces iz koda da resetujes windows, sigurno neces "kliktati" nekakvom funkcijom na start pa turn off pa reset.... (strasno :)) nego ces lepo preko ShellApi-ja to odraditi kulturno i sigurno. Pozdrav svima. [ gajo2 @ 22.10.2006. 20:50 ] @
Evo jedan glup primer:
Code: procedure TForm1.Button1Click(Sender: TObject); var RunDialog, OKBtn: THandle; begin RunDialog := FindWindow(nil,'Run'); OKBTn := FindWindowEx(RunDialog, 0, nil, 'OK'); SendMessage(OKBtn, WM_LBUTTONDOWN, WPARAM(MK_LBUTTON), 0); SendMessage(OKBtn, WM_LBUTTONUP, WPARAM(MK_LBUTTON), 0); end; Dakle otvori Start->Run dijalog, i onda pokreni svoj program, koji ce da uzme handle od Run dijaloga, pa onda handle od OK dugmeta, a onda ce dugmetu poslati mouse down i mouse up komende (= click). Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|