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

preko SendMessage ctrl+G

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

[ Pregleda: 2412 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 932
91.150.118.*



+31 Profil

icon preko SendMessage ctrl+G13.08.2007. u 15:17 - pre 203 meseci
Zelim odredenom prozoru da posaljem preko SendMessage poruke da sam pretisnuo istovremeno ctrl i neko slovo recimo G.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

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



+6 Profil

icon Re: preko SendMessage ctrl+G14.08.2007. u 19:40 - pre 203 meseci
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
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
91.150.118.*



+31 Profil

icon Re: preko SendMessage ctrl+G14.08.2007. u 22:57 - pre 203 meseci
U redu ja cu da prevedem. Trenutne kombinacije mi nisu dale zeljeni rezultat.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 01:01 - pre 203 meseci
> 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.
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
91.150.118.*



+31 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 08:00 - pre 203 meseci
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.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 08:53 - pre 203 meseci
> 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).
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
91.150.118.*



+31 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 09:50 - pre 203 meseci
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.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 12:44 - pre 203 meseci
> 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.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

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



+6 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 17:04 - pre 203 meseci
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
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
91.150.111.*



+31 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 21:37 - pre 203 meseci
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.
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

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



+6 Profil

icon Re: preko SendMessage ctrl+G15.08.2007. u 21:46 - pre 203 meseci
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!
 
Odgovor na temu

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

[ Pregleda: 2412 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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