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

preko SendMessage ctrl+G

[es] :: Pascal / Delphi / Kylix :: preko SendMessage ctrl+G

[ Pregleda: 872 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 681
91.150.118.*



Profil

icon preko SendMessage ctrl+G13.08.2007. u 15:17

Zelim odredenom prozoru da posaljem preko SendMessage poruke da sam pretisnuo istovremeno ctrl i neko slovo recimo G.
13.08.2007. u 15:17 

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 203
*.cpe.vektor.net.



Profil

icon Re: preko SendMessage ctrl+G14.08.2007. u 19:40
Ne znam kako to tacno da posaljes, posto ne znam sta treba da se prosledi za parametar kad saljes WM_CHAR poruku! Ako imas Spy++, nadji handle nekog edit polja i loguj njegove poruke, tj. sta salje kad pritisnes Ctrl+ (nesto)! Napisacu ti kasnije sta meni prikazuje, mada to ne znam da "prevedem" za delphi! Pozzz
14.08.2007. u 19:40 

Milan Milosevic

Član broj: 67
Poruke: 681
91.150.118.*



Profil

icon Re: preko SendMessage ctrl+G14.08.2007. u 22:57
U redu ja cu da prevedem. Trenutne kombinacije mi nisu dale zeljeni rezultat.
14.08.2007. u 22:57 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1661
*.adsl.sezampro.yu.



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 01:01
> Zelim odredenom prozoru da posaljem preko SendMessage poruke da sam pretisnuo istovremeno ctrl i neko slovo recimo G.

Da li je taj prozor u drugom procesu ili u istom? Ako ima fokus onda jednostavno koristi keybd_event funkciju. Ako nema fokus onda šalješ WM_KEYDOWN i WM_KEYUP pomoću PostMessage funkcije. Redosled je:
Ctrl KeyDown
G KeyDown
G KeyUP
Ctrl KeyUp
Ako je prozor u drugom procesu, zavisno od toga šta se u njemu dalje dešava sa tim porukama, možda su potrebne i dodatne mere.
15.08.2007. u 01:01 

Milan Milosevic

Član broj: 67
Poruke: 681
91.150.118.*



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 08:00
Probao sam tu kombinaciju poruka i ne funkcionise. Prosto ta kombinacija tastera pokrece neki proces u drugoj aplikaciji. Zelim napraviti da preko moje aplikacije automatizujem niz dogadaja koje izvrsavam sa doticnom aplikacijom. Fali mi samo taj deo sa kobinacijama tastera.
15.08.2007. u 08:00 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1661
*.adsl-1.sezampro.yu.



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 08:53
> Probao sam tu kombinaciju poruka i ne funkcionise. Prosto ta kombinacija tastera pokrece neki proces u drugoj aplikaciji.

Pokaži kod, verovatno ne vodiš računa o scancodu. Bitno je kako se okidaju komande u tom programu, da li direktno na WM_KEYxx ili se one transliraju u WM_CHAR (u kom slučaju ima još posla).
15.08.2007. u 08:53 

Milan Milosevic

Član broj: 67
Poruke: 681
91.150.118.*



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 09:50
SendMessage (Edit2.Handle, WM_KEYDOWN, VK_CONTROL, 0);
SendMessage (Edit2.Handle, WM_KEYDOWN, ord('G'), 0);
SendMessage (Edit2.Handle, WM_KEYUP, ord('G'), 0);
SendMessage (Edit2.Handle, WM_KEYUP, VK_CONTROL, 0);

ode sam uzeo probnu Edit komponentu na kojoj sam napravio proveru na dogadaj OnKEYDown. I ne radi preko slanja kobinacije. Dok direktno radi kad probam preko tastature. Takode i ne radi kad posaljem prozoru za koji i pravim aplikaciju.
Razmisljam se da je mozda to i odgovor na neki drugi dogadaj recimo KEYPRESS ali misim da ne treba da postoji razlika koliko ja znam nema odvojena windows poruka za taj dogadaj.
15.08.2007. u 09:50 

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 1661
*.adsl-1.sezampro.yu.



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 12:44
> SendMessage (Edit2.Handle, WM_KEYDOWN, VK_CONTROL, 0);

Dve greške imaš, mora se koristiti PostMessage i mora se navesti ScanCode (lParam). ScanCode možeš generisati pomoću MapVirtualKey ili videti koju vrednost dobija kada se pritisne tastatura (bilo handlovanjem WM_KEYxxx poruke ili iz WinSight32 ili Spy++).

Imam nekoliko pitanja od kojih zavisi kako treba prići problemu.

1) Da li je taj prozor u drugom procesu (programu) ili u istom?
2) Kako taj prozor okida operacije, na WM_KEYxx ili na WM_CHAR poruke?
3) Koji objekat se tačno okida u tom drugom prozoru, meni, button, shortcut..?
4) Da li se ta operacija može odabrati i pritiskom na neko dugme?
5) Da li ti imaš kontrolu nad tim drugim programom (možeš menjati kod)?

Bilo bi dobro da preko WinSight32 ili Spy++ pogledaš koje sve poruke stižu kada se pritisne kombinacija tastera, često se tako može otkriti i lakši put za realizaciju od simuliranja pritisaka na tastaturu.
15.08.2007. u 12:44 

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 203
*.cpe.vektor.net.



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 17:04
Evo napravio sam jednu aplikaciju, stavio na formu samo jedno Edit polje i pritisnuo zatim Ctrl+A (dok je fokus bio na edit polju)! Logovao sam poruke preko Spy++, i evo sta sam dobio:

Code:

<00001> 002100E4 P WM_KEYDOWN nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0  fRepeat:0 fUp:0
<00002> 002100E4 P WM_KEYDOWN nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00003> 002100E4 P WM_CHAR chCharCode:'' (1) cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<00004> 002100E4 P WM_KEYUP nVirtKey:VK_CONTROL cRepeat:1 ScanCode:1D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
<00005> 002100E4 P WM_KEYUP nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:1 fUp:1


Znaci, ti samo treba da provalis kako da dobijes ovo: chCharCode:'', za Ctrl+ neki taster! Ako me ne bude mrzelo pokusacu da provalim! Pozdrav
15.08.2007. u 17:04 

Milan Milosevic

Član broj: 67
Poruke: 681
91.150.111.*



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 21:37
Vidim ali ne razumem u potpunosti. Dakle treba provaliti samo onaj deo za poruku WM_CHAR
Kockicu ti prijavi kad pretisnes ctrl. Odnosno kad stavimo u obradi dogadaja onkeydown
ShowMessage(char(Key));

lKeyData
evo neke specifikacije za lParam.
Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table:

Value Description
0-15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.
16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28 Reserved; do not use.
29 Specifies the context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0.
30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.
31 Specifies the transition state. The value is 1 if the key is being released, or it is 0 if the key is being pressed.

Probao sam nesto ali nije islo.
probacu da napravim nesto.
15.08.2007. u 21:37 

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 203
*.cpe.vektor.net.



Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 21:46
Video sam to, sve sam pokusao al nece! Fora je da samo provalis kako je on dosao do tog parametra u SendMessage(handle, WK_CHAR, xxx, 0); Videcu da nadjem na netu neko dobro objasnjenje za Scancode i MapVirtualChars...

edit: ne razumem sto stavljas u obradu dogadaja onkeydown
ShowMessage(char(Key)); ja sam do onih poruka dosao preko drugog programa, nisam pisao nikakve obrade dogadjaja u programu na kome se nalazi edit ciji handle saljes kao parametar!
15.08.2007. u 21:46 

[es] :: Pascal / Delphi / Kylix :: preko SendMessage ctrl+G

[ Pregleda: 872 | Odgovora: 10 ]

Postavi temu Odgovori

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