Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 3.401 pregleda

Najnovija ↓

preko SendMessage ctrl+G 13.08.2007. u 16:17 · pre 234 meseca #1
Zelim odredenom prozoru da posaljem preko SendMessage poruke da sam pretisnuo istovremeno ctrl i neko slovo recimo G.
Re: preko SendMessage ctrl+G 14.08.2007. u 20:40 · pre 233 meseca #2
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
Re: preko SendMessage ctrl+G 15.08.2007. u 02:01 · pre 233 meseca #4
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: preko SendMessage ctrl+G 15.08.2007. u 09:00 · pre 233 meseca #5
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.
Re: preko SendMessage ctrl+G 15.08.2007. u 09:53 · pre 233 meseca #6
> 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).
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: preko SendMessage ctrl+G 15.08.2007. u 10:50 · pre 233 meseca #7
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.
Re: preko SendMessage ctrl+G 15.08.2007. u 13:44 · pre 233 meseca #8
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: preko SendMessage ctrl+G 15.08.2007. u 18:04 · pre 233 meseca #9
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
Re: preko SendMessage ctrl+G 15.08.2007. u 22:37 · pre 233 meseca #10
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.
Re: preko SendMessage ctrl+G 15.08.2007. u 22:46 · pre 233 meseca #11
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!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme