Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

26.10.2003, 22:13

Simulieren von Tastendrücken, etc in Windows

Wie bringe ich Windows bei dass zB. eine Taste gedrückt wurde?

2

26.10.2003, 22:20

Gar nicht ;D Man kann das Windows nicht beibringen, weil Windows dies schon kann ;). Nur das System selbst ist Authorisiert den Status der Tastatur zu erfragen.
Windows sagt dir ob und welche Taste gedrückt wurde. Schau dir mal die WM_KEY* Messages an.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

3

26.10.2003, 22:24

Hi

Ich weiß zwar net, ob du das meinst, aber wenn du zum Beispiel Strg+P in einer anderen Anwendung automatisch drücken lassen willst, dann geht ds so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
//-------------------------------------------------------------------
// Tastendruck in einer anderen Anwendung simulieren 
// (Strg+P im folgenden Beispiel)
//-------------------------------------------------------------------

HWND hWin = FindWindow(NULL, "FensterName"); 
SetForegroundWindow(hWin);     // Focus auf gewuenschtes Fenster setzen
keybd_event(0x11, 0, 0, NULL); // 'Strg' drücken
keybd_event(0x50, 0, 0, NULL); // 'p' drücken
keybd_event(0x50, 0, KEYEVENTF_KEYUP, 0); 'p' loslassen
keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0); 'Strg' loslassen
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

4

27.10.2003, 15:40

Wobei die keybd_event Funktion nur unter Windows 9x funktioniert

unter WinNT/2000/XP funktioniert dies nicht

eine Möglichkeite die überall laufen müsste, wäre SendMessage zu nutzen

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
//-------------------------------------------------------------------
// Tastendruck in einer anderen Anwendung simulieren
// (Strg+P im folgenden Beispiel)
//  Diesmal mit SendMessage für Portabilität
//-------------------------------------------------------------------

HWND hWin = FindWindow(NULL, "FensterName");
SetForegroundWindow(hWin);     // Focus auf gewuenschtes Fenster setzen
SendMessage(hWin,WM_KEYDOWN,VK_LCONTROL,0); // Linke STRG Taste gedrückt
SendMessage(hWin,WM_KEYDOWN,50,0); // P Taste 
SendMessage(hWin,WM_KEYUP,VK_LCONTROL,0); // Linke STRG Taste gedrückt
SendMessage(hWin,WM_KEYUP,50,0); // P Taste
Do, ut des!
Ceterum censeo, carthaginem delendam esse

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

27.10.2003, 15:50

Zitat von »"Hauptman"«

Wobei die keybd_event Funktion nur unter Windows 9x funktioniert
unter WinNT/2000/XP funktioniert dies nicht

Das stimmt nicht. keybd_event funktioniert auch unter Windows XP, ich habe es selbst bereits getestet. Ebenso auch mouse_event.

6

27.10.2003, 15:58

Zitat von »"David Scherfgen"«

Zitat von »"Hauptman"«

Wobei die keybd_event Funktion nur unter Windows 9x funktioniert
unter WinNT/2000/XP funktioniert dies nicht

Das stimmt nicht. keybd_event funktioniert auch unter Windows XP, ich habe es selbst bereits getestet. Ebenso auch mouse_event.


ok
ich hab die Info auch nur aus der MSDN
und da steht
Windows NT/2000/XP:This function has been superseded.(ersetzt)
Do, ut des!
Ceterum censeo, carthaginem delendam esse

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

7

27.10.2003, 17:21

bei mir läuft's unter xp auch :P
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

8

27.10.2003, 17:34

ok
ich habs ausprobiert
unter 2k funktioniert auch ;D

ich find aber die Lösung mit SendMessage trotzdem schöner
Do, ut des!
Ceterum censeo, carthaginem delendam esse

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

9

27.10.2003, 17:48

is ja auch neuer

und wurde ja nicht umsonst bei Win NT/2000/XP wie msdn sagt "superseded"
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Anonymous

unregistriert

10

27.10.2003, 21:10

Danke an alle!!!

Werbeanzeige