Avatar billede webster Nybegynder
30. oktober 2002 - 16:54 Der er 8 kommentarer og
1 løsning

Sende tastetryk

Hejsa

Sidder og kæmper med at lave et program der skal kunne sende tastetryk til et andet program. Det her system skal køre i baggrunden mens jeg kører min computer så det er vigtigt det ikke irritere mig, ved fx at give fokus til target-programmet.

Det jeg har forsøgt er at bruge findWindow api kaldet til at få target-programmets handle. Dernæst bruger jeg PostMessage til at sende tastetryk. Jeg kan også godt få postmessage til at sende nogle tastetryk, men ved bogstaver og andre tegn ser det ud til at gå galt. Det jeg vil kunne sende er tal fra 1-9 og [tab] samt [ctrl+tab]. Er der nogen der ved hvordan det kan gøres med postMessage eller evt. ved andre metoder?

På forhånd tak
Avatar billede clausjacobsen Nybegynder
30. oktober 2002 - 17:31 #1
Har du prøvet med funktionen SendKeys:
SendKeys "R", True
Avatar billede webster Nybegynder
30. oktober 2002 - 17:46 #2
yup, den sender til det program der har fokus. Forudsætningen er netop at det program jeg vil sende til er minimeret og ikke skal "stjæle" fokus.
Avatar billede mikker Nybegynder
30. oktober 2002 - 19:00 #3
Lyder som lidt af en opgave. Kan du ikke komme udenom ved at skrive til en DB eller blot en fil?

Der er sikkert en måde, men jeg er for dum til at se den :O)

- Mikker
Avatar billede webster Nybegynder
30. oktober 2002 - 19:26 #4
Status pt er at jeg bruger sendmessage funktion til at sende et tastetryk (er lig med postMessage returnerer bare først når modtager programmet har behandlet tastetrykket). Det lidt sjove er at modtagerprogrammet ikke udfører de handlinger det normalt ville gøre ved fx et tryk på 2, men hvis jeg sætter det i et chat mode så modtager det faktisk de tegn jeg sender... Så er som om at det ikke blier sendt på den "rigtige" måde.. jeg er kørt lidt fast
Avatar billede webster Nybegynder
30. oktober 2002 - 19:38 #5
har leget lidt mere med det. Anser det nu for meget sandsynligt at jeg simpelthen ikke har fat i den hwnd der ved normalt brug af programmet vil være aktiveret og modtage tastetryk. Så vil gerne acceptere et svar på hvordan man kan se om et program har nogle child vinduer.
Avatar billede mikker Nybegynder
31. oktober 2002 - 16:56 #6
Har du kigget her:

http://www.eksperten.dk/spm/94340

??

- Mikker
Avatar billede kennethrisum Nybegynder
31. oktober 2002 - 16:57 #7
prøv at se på:

http://www.mvps.org/vbnet/index.html?code/enums/enumwindowsdemo.htm

Her er en kode stump omkring enumerating child windows.

Du kan så finde class name og evt. text på hwnd'erne og så om der er et vindue, der modsvarer det som f.eks. spy++ viser.

Du skulle så gerne kunne bruge postmessage.

Alternativt kan du lave subclassing på et vindue af samme class som klient programmet. Herved vil du så kunne få de nøjagtige messages, der postes til vinduet.
Avatar billede webster Nybegynder
31. oktober 2002 - 16:59 #8
Nej, men det var hellere ikke løsningen. Fandt ud af det sendt i går aftes. Problemet var så simpelt at programmet krævede at 3 messages blev sendt til hver keystroke for at den opfattede det (keydown, char, keyup) og jeg havde kun sendt char.
Avatar billede biohazard_666 Nybegynder
18. april 2006 - 23:08 #9
hejsa :)
Ved godt det er en gammel tråd, men fik du det til at virke, og kan du evt. poste koden her / sende den til mig på mail: ldr[at]nr-one.dk da jeg selv har et lign. problem. Tak! :)
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