Tastendrücke simulieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Tastendrücke simulieren

Beitrag von estate »

Kann ich irgendwie mit Purebasic einen Tastendruck auf der Tastertur simulieren? Ich will nämlich ein Dvd Programm steuern.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag von Jilocasin »

Code: Alles auswählen

Procedure SimKey(key) ; Simuliert einen Tastendruck. Die gewünschte Taste muss mittels "#VK_[TASTE]" angegeben werden.
  keybd_event_(key,1,0,0) ; 0 für runter
  keybd_event_(key,1,2,0) ; 2 für hoch
EndProcedure
:mrgreen: :allright:
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Jilocasin, du machst es mal wieder viel zu kompliziert!
Du musst dich endlich mal auf die features von PB 4 einlassen, denn das geht mit Macros viel besser:

Code: Alles auswählen

Macro press(taste) 
     keybd_event_(#VK_#taste, 0, 0, 0) 
     keybd_event_(#VK_#taste, 0, #KEYEVENTF_KEYUP, 0) 
EndMacro


RunProgram("notepad.exe")
Delay(1000)

press(A)
press(N)
press(D)
press(5)
press(1)
So, hier muss nicht die komplette Konstante einer Prozedur übergeben werden, es reicht, wenn man das macro aufruft und in Klammern notiert, welcher Buchstabe oder Zahl gedrückt werden soll.

Der erste Befehl drückt die Taste, der zweite lässt die Taste los. Das bedeutet: Wenn man Buchstaben GROß schreiben will, muss man die Befehle mit der Konstante #VK_SHIFT separat verwenden:

Code: Alles auswählen

 keyd_event_(#VK_SHIFT, 0, 0, 0)

; Hier zwischen wird alles getippt, als würde die SHIFT-taste gedrückt werden

keybd_event(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
Edit: Und nix da 1 für hoch, 2 für runter. Das kapiert doch keiner! Du kannst den Leuten auch ruhig mal die handelsüblichen Konstanten nahelegen.
Zuletzt geändert von AND51 am 21.10.2006 15:33, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@AND51
hör auf zu meckern :wink: und beseitige die Tipfehler im Source

In PB4 braucht man auch nicht mit Delay zu warten, das geht auch
ordentlicher, siehe Processlib

Desweiteren wäre es unbedingt empfehlenswert, sicherzustellen, das Notepad
auch den Focus hat, sonst können die Tastendrücke großen Schaden
anrichten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Das ist nur eine Schnell&Dreckig Lösung (bis auf das Macro), daher das Delay.

Ansonsten hast du generell ja auch recht, man sollte den Code nicht ausführen, während man im Hintergrund, den Formatieren-Dialog offen hat. Aber hier, dient es nunmal nur zur Demnstration ich hätte ihm ja auch nur das Macro geben können. :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@AND51
Zumindest auf evtl. Probleme aufmerksam machen, so kann derjenige ja
nochmals nachfragen. Okay, hab ich ja jetzt gemacht :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Beitrag von estate »

Hallo, danke für eure Antworten.
Ich habe nur leider gerade eine stressvolle Zeit im Beruf, deshalb kann ich eure Lösungsvorschläge nicht gleich ausprobieren.
Ich werde mich aber gleich melden, wenn ich wieder dazukomme.
Vielen Dank!
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Im Codearchiv gibt es noch SendKeys.pb .
Antworten