Avatar billede sjakal73 Nybegynder
06. januar 2005 - 10:25 Der er 9 kommentarer og
1 løsning

Send message til en control

Hvordan kan jeg sende en windows-message til en control?
Jeg ønsker at simulere et tastetryk i en textbox.
Avatar billede Syska Mester
06. januar 2005 - 10:57 #1
Tror ikke jeg helt forstår det, kan du ikke bare trykke på den ønskede tast, hvis det skal være et tilfældigt hele tiden?

eller er det vel bare at gøre sådan her:
textBox1.Text = textBox1.Text + "dit tast";
Avatar billede sjakal73 Nybegynder
06. januar 2005 - 11:08 #2
Nej, kan ikke fungere med textBox1.Text+="blah".
Da det skal overholde control'ens standardfunktioner
i dette tilfælde, skal f.eks. overholdes hvis alt tekst i
feltet er markeret skal hele den nye tekst resultere i kun den ene tast.

Du ved windows-standard, men kan jo være så meget.

Næ, fandt ud af at via user32.dll og SendInput kunne jeg simulere tastetryk,
bare utroligt at det er nødvendigt at henvende sig direkte til windows-api'et.
Det er jo ikke meningen med .net, skulle jo gerne virke på andre platforme
som f.eks. linux (med mono)
Avatar billede wisen Nybegynder
06. januar 2005 - 11:11 #3
Jeg mener at der er noget der hedder "SendKey"
Avatar billede sjakal73 Nybegynder
06. januar 2005 - 11:21 #5
Jo, ser ud til at virke.. men lidt irriterende at man skal focus'e den aktuelle control først istedet for at kalde funktionen med evt et handle til den.
Irriterende, fordi man ikke på sin knap eller hva det er beholde focus'en.

Fandt lige ud af at nedenstående virker ret godt, så hvilken skulle jeg bruge :)

[DllImport("user32", EntryPoint="PostMessage")]
public static extern int PostMessageA(int hwnd, int wMsg, int wParam, int lParam);

private const int WM_KEYDOWN = 0x100;

PostMessageA(textBox1.Handle.ToInt32(),WM_KEYDOWN,(int)Keys.A,0);
Avatar billede sjakal73 Nybegynder
06. januar 2005 - 11:23 #6
Næ sq, med SendKeyWait kan jeg smide focus'en tilbage til den primære med det samme igen.

Super, smid lige et svar :)
Avatar billede Syska Mester
06. januar 2005 - 11:49 #7
smart, det vil jeg i hvert fald lige notere mig....

Men hvorfor skal du simulere det, lyder som noget geil :-P
Avatar billede wisen Nybegynder
06. januar 2005 - 12:54 #8
1 stk. svar :)
Avatar billede burningice Nybegynder
06. januar 2005 - 13:12 #9
buzzzz>> der kan da være mange grunde. Hvis det nu er et klient/server-program hvor tastetryk på klienten skal havne på serveren ?
Avatar billede Syska Mester
06. januar 2005 - 13:16 #10
ja, jeg kunne heller ikke lige komme i tanke om mange flere end lige den, men så ville man vel sende en kommando til det, det ser lyder mere om noget remote control....

Men nu ved jeg hvor nemt det kan lade sig gøre.....

// ouT
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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