Avatar billede elv Nybegynder
20. september 2001 - 17:00 Der er 13 kommentarer og
1 løsning

SendMessage HURTIGT

Davs

Jeg skal sende nogle bogstaver / tastetryk til et andet program, f.eks. kør-menuen (kun et eksempel, det er ikke den :)). Jeg har prøvet at gøre det sådan:
  SendMessage(HWND_BROADCAST, WM_KeyDown, 69, 0);
  SendMessage(HWND_BROADCAST, WM_KeyUp, 69, 0);

I min forvirring har jeg også prøvet at gøre det på en lokal memo, men det virker heller ikke. Formen kan godt fange tasten, der kommer en keydown med key = 69
(formens keypreview = true og 69 = VK_E)
men den bliver ikke printet i memoen. Hvad går der galt?

Hurtige svar tak :)
Avatar billede ultik Nybegynder
20. september 2001 - 17:02 #1
kan det være fordi at den bliver \"fanget\" og aldrig når frem til memoen? har du tjekket at den når frem til memoen?
Avatar billede elv Nybegynder
20. september 2001 - 17:06 #2
Jeps, den kommer også frem til memoens keydown med key = 69.
Avatar billede unclebug Nybegynder
20. september 2001 - 17:40 #3
WM_KeyDown indeholder ikke bare tastens kode, men også nogle bits af forskellig betydning (i det 2. parameter). I delphi er den simpel, men ikke i Windows. Du kan se det i hjælpen hvis du trykker F1 på WM_KeyDown.

Prøv at skrive 1179649 i det andet parameter, i dit eksempel (med E). Det er den kode min Windows kommer frem til når jeg trykker E en enkelt gang.
Avatar billede elv Nybegynder
20. september 2001 - 19:14 #4
Ellers et godt forsøg, men der sker stadig ikke noget...

Hvis der er nogen der vil have sourcen for at rode lidt med den, skal de bare sige til.

Emil
Avatar billede elv Nybegynder
20. september 2001 - 19:15 #5
HOVHOV! Nu fandt jeg ud af, at funktionen returner 1, men den skal give 0 hvis den lykkes. Hvad kan det nu betyde?

Emil
Avatar billede zephyrus Nybegynder
20. september 2001 - 22:45 #6
at det IKKE lykkedes :-)

Prøv at lade os se den del af koden som skal overføre tastetryk, så ser vi på det..
Avatar billede borrisholt Novice
21. september 2001 - 08:42 #7
elv >> skriv til Jens@Borrisholt.com Så har jeg noget kode der kan simulere tastetryk ...

Jens B
Avatar billede elv Nybegynder
22. oktober 2001 - 07:20 #8
Venter stadig på mail.... snoork :)
Avatar billede borrisholt Novice
22. oktober 2001 - 08:55 #9
Mysktisk .. Det troede jeg etenlig jeg havde sendt ... Send lige en mail mere så sender jeg den i dag :-)

Jens B
Avatar billede elv Nybegynder
22. oktober 2001 - 13:22 #10
jeg har nu altså liiidt svært ved at se hvordan et program med tastaturgenveje kan have noget at gøre med at simulere tastetryk.... er du helt sikker på at det er den rigtige source :))

Hvis andre har forslag så ligger problemet stadig i det her kode:
  memo1.setFocus();
  SendMessage(Memo1.handle, WM_KeyDown, 69, 1179649);
  SendMessage(Memo1.handle, WM_KeyUp, 69, 1179649);
eller varianter af den. den får sendt beskederne, men de returnerer 0 og der bliver ikke skrevet noget i memoen.....

Emil
Avatar billede elv Nybegynder
22. december 2001 - 23:27 #11
Har stadig ikke fået det rigtige program af borrisholt.... jeg fik et til noget andet (windows-tastatur-genveje), men det hjalp ikke rigtigt.... nogen forslag?
Avatar billede hermandsen Juniormester
20. marts 2002 - 00:33 #12
Hey elv
Ved godt at det var et "HURTIGT" spørgsmål, men hvis det ikke er helt forbi endnu, så er koden her:

keybd_event(ord('A'),0,0,0); // nedtrykker et 'A'
keybd_event(ord('A'),0,KEYEVENTF_KEYUP,0); // løfter tasten igen

For specielle taster såsom cursor op kan du bruge følgende:

keybd_event(vk_up,0,0,0);
keybd_event(vk_up,0,KEYEVENTF_KEYUP,0);

Husk at tilføje ShellApi til under uses.

Det var alt herfra...

//hermandsen
Avatar billede hermandsen Juniormester
20. marts 2002 - 00:45 #13
Det var selvfølgelig et svar...
Avatar billede elv Nybegynder
20. marts 2002 - 00:46 #14
Endelig lykkedes det!! Takker for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester