Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Simuliranje klika mišem na Button u drugoj aplikaciji

[es] :: Pascal / Delphi / Kylix :: Simuliranje klika mišem na Button u drugoj aplikaciji

[ Pregleda: 2565 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

--ja--

Član broj: 4387
Poruke: 232
*.adsl.net.t-com.hr.

ICQ: 132872590


+3 Profil

icon Simuliranje klika mišem na Button u drugoj aplikaciji19.04.2010. u 00:05 - pre 170 meseci
Pozdrav svima!

Imam aplikaciju koja ima formu sa par Buttona. Source od te aplikacije ne posjedujem. Želim simulirati klikove na buttone u danoj aplikaciji. Trenutno imam napola funkcionalno rješenje, tj. na neke buttone mogu simulirati klik, dok na neke ne mogu.

Spomenuti program sam otvorio u ResourceHackeru, i na danoj formi, između ostalog imam slijedeće stavke:
CONTROL "Button 0", 1100, BUTTON, BS_OWNERDRAW | BS_CENTER | BS_VCENTER | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 0, 28, 34, 28
CONTROL "Button 1", 1101, BUTTON, BS_OWNERDRAW | BS_CENTER | BS_VCENTER | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 35, 28, 34, 28
CONTROL "Button 2", 1102, BUTTON, BS_OWNERDRAW | BS_CENTER | BS_VCENTER | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 69, 28, 34, 28
CONTROL "Button 3", 1103, BUTTON, BS_OWNERDRAW | BS_CENTER | BS_VCENTER | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 104, 28, 34, 28
CONTROL "Button 4", 1104, BUTTON, BS_OWNERDRAW | BS_CENTER | BS_VCENTER | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 139, 28, 34, 28
CONTROL "Logic", 1012, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 282, 0, 29, 8
CONTROL "Details", 1016, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 334, 10, 35, 9

Na Buttone koji su BS_OWNERDRAW ne mogu simulirati klik, dok na BS_AUTOCHECKBOX i BS_PUSHBUTTON simulacija klika radi dobro. Pokušao sam promijeniti BS_OWNERDRAW u BS_PUSHBUTTON, međutim tad se dani program više ne ponaša kako bi trebao.

Klikanje na Button sam uradio prema ovom uputstvu: http://www.swissdelphicenter.ch/torry/showcode.php?id=727
Pokušao sam i zamijeniti
PostMessage(H, BM_CLICK, 0, 0);
sa
PostMessage(H, WM_LBUTTONDOWN, 0, 0);
PostMessage(H, WM_LBUTTONUP, 0, 0);
međutim dobivam iste rezultate.

Ima li kakvo rješenje? Zahvaljujem!
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji19.04.2010. u 10:35 - pre 170 meseci
> Imam aplikaciju koja ima formu sa par Buttona. Source od te aplikacije ne posjedujem. Želim simulirati klikove na buttone u danoj aplikaciji. Trenutno imam napola
> funkcionalno rješenje, tj. na neke buttone mogu simulirati klik, dok na neke ne mogu.

Pokušaj prvo sa simuliranjem pritisaka na tastaturi, startuj WinSight (dolazi uz Delphi) ili Spy++ (dolazi uz Visual Studio) i pogledaj koje poruke se šalju prozoru kada se odabiraju komande preko tastature. Posle samo treba da fokusiraš taj program i simuliraš mu pritisak na tastaturu pomoću keybd_event ili SendInput. Za simulaciju pritisaka mišem koristi mouse_event ili SendInput. Pogledaj ova dva linka za primere.

http://www.elitesecurity.org/t249539-0#1499539
http://www.elitesecurity.org/t72043-0#457518
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.dsl.iskon.hr.

ICQ: 132872590


+3 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji06.05.2010. u 18:09 - pre 170 meseci
Igrao sam se sa WinSightom sad i jedna zanimljiva stvar se dogodila. Pratim poruke koje se šalju buttonima, i one jednako izgledaju kao i one koje ja šaljem, međutim program na moje poruke ne reagira.

Onda sam ubacio sleep(150) između mousedown i mouseup poruka, i stvar je proradila (ovo 150 sam odredio eksperimentalno, manji delay ne radi pouzdano, nekad primi nekad ne...)

Ovo za keybd_event i SendInput ću sad pogledati, jer postoje 2 buttona koja nemaju nikakav caption pa ne mogu na taj način doći do njihovog handle-a, a imaju pridružene tipke na tipkovnici (tipke 7 i 8).

Kad pritišćem tipke na tipkovnici ne vidim nikakve keyboard evente u winsightu pa me to zbunjuje...
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.dsl.iskon.hr.

ICQ: 132872590


+3 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji07.05.2010. u 10:36 - pre 170 meseci
Evo uspio sam i ovo sa tipkama, pa da podijelim, možda će nekome trebati:

Code:
        PostMessage(windowHandle, WM_KEYDOWN, VkKeyScan ('7'), 0);
        sleep(150);
        PostMessage(windowHandle, WM_CHAR, VkKeyScan ('7'), 0);
        sleep(150);
        PostMessage(windowHandle, WM_KEYUP, VkKeyScan ('7'), 0);


Isprva mi nije radio jer sam poruku slao sa SendMessage, dok sa PostMessage radi. Također, ako maknem ove sleep-ove, stvar prestaje funkcionirati.

Sad mi još ostaje samo jedna stvar. U prvom postu navedeni Buttoni ponekad mijenjaju boju (blinkaju). Potrebno mi je da vidim koja je trenutna boja buttona. Pokušao sam pomoću GetPixel ali stalno dobivam crnu boju. Prozor je skriven. Može li se ovo napraviti?
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji07.05.2010. u 11:45 - pre 170 meseci
> Sad mi još ostaje samo jedna stvar. U prvom postu navedeni Buttoni ponekad mijenjaju boju (blinkaju). Potrebno mi je da vidim koja je trenutna boja buttona.
> Pokušao sam pomoću GetPixel ali stalno dobivam crnu boju. Prozor je skriven. Može li se ovo napraviti?

Dođi do handla tog buttona, onda do njegovog DCa (GetDC) i potom pozovi GetPixel.
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.dsl.iskon.hr.

ICQ: 132872590


+3 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji07.05.2010. u 13:26 - pre 170 meseci
Tako sam i pokušao, ali mi ne radi...

Nešto sam uspio pomoću PrintWindow API-ja, međutim to radi samo ako je prozor prikazan na ekranu. Ako ga minimiziram ili mu pošaljem SW_HIDE, onda ova metoda više ne funkcionira.
Preko PrintWindow API-ja dobivam i okvir prozora, a htio bih samo Client Area (s obzirom da debljina okvira ovisi o os-u i postavkama). Pokušam sa opcijom PW_CLIENTONLY ali to ne radi, a kad umjesto toga stavim 1 dobijem neki bijeli okvir okolo, i svejedno iscrta i title bar. Ako pošaljem handle od buttona, a ne od prozora onda mi vrati sliku veličine buttona kompletno bijele boje...

Puno bi mi značilo kad bi prozor s kojeg izvlačim podatke mogao ostati skriven, ali ako baš ne može, onda kako da bar dobijem sliku samo njegovog Client Area?
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Simuliranje klika mišem na Button u drugoj aplikaciji08.05.2010. u 15:13 - pre 170 meseci
Traži se Client Area Buttona a to se može u svakom os-u dobiti ovako, iz te slike prozora:

CARect.left := Button.left - Form1.Left;
CARect.top := Button.top - Form1.top;
CARect.Right := Button.Right - Form1.Left;
CARect.Bottom := Button.Bottom - Form1.top;
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Simuliranje klika mišem na Button u drugoj aplikaciji

[ Pregleda: 2565 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.