C++ Console im Hintergrund laufen lassen und Tastenbefehle weiterhin aufnehmen und ausgeben
Hallo.
Ich habe ein kleines programm in cpp geschrieben.
Ich benötige es für einen turnierablauf.
Das programm wird vom user per console geöffnet.
Das programm wird dann mit einem hotkey gestartet (Eine tastatureingabe, welche auch das eigentliche spiel startet),
dann läuft ein countdown. Bei 0 null, gibt das programm einen tastatur key aus.(dieser befehl soll sas andere spiel stoppen)
Das problem:
Sobald die console nichtmehr im vordergrund liegt, bzw sobald es nicht mehr das aktive fenster ist, nimmt sie weder tastaturbefehle auf, noch gibt sie welche aus.
Das programm soll aber eigentlich im hintergrund arbeiten.
Wie könnte ich dieses problem lösen ?
Ich habe ein kleines programm in cpp geschrieben.
Ich benötige es für einen turnierablauf.
Das programm wird vom user per console geöffnet.
Das programm wird dann mit einem hotkey gestartet (Eine tastatureingabe, welche auch das eigentliche spiel startet),
dann läuft ein countdown. Bei 0 null, gibt das programm einen tastatur key aus.(dieser befehl soll sas andere spiel stoppen)
Das problem:
Sobald die console nichtmehr im vordergrund liegt, bzw sobald es nicht mehr das aktive fenster ist, nimmt sie weder tastaturbefehle auf, noch gibt sie welche aus.
Das programm soll aber eigentlich im hintergrund arbeiten.
Wie könnte ich dieses problem lösen ?
Please also mark the comments that contributed to the solution of the article
Content-Key: 566258
Url: https://administrator.de/contentid/566258
Printed on: April 18, 2024 at 13:04 o'clock
6 Comments
Latest comment
Wie könnte ich dieses problem lösen ?
Indem du erst mal deinen derzeitigen Code postest. Denn selbst das was du bislang tust, lässt sich nicht mit dem C++ Standard umsetzen. Also nutzt du jetzt schon eine Drittbibliothek oder direkt die API der Plattform auf der dein Programm läuft. Aber selbst das Betriebssystem hast du uns nicht verraten ...Steffen
C, C++, WinAPI Gemüsesuppe
SendInput versucht eine einfache Keyboard Emulation. Heißt, der gesendete Input landet auf dem Fenster das gerade den Keyboard Focus hat (so wie bei einer normalen Tastatureingabe). Welches Verhalten du aber eigentlich willst (also welches Fenster nun welchen Input empfangen soll) habe ich noch nicht verstanden. Sicherlich musst du dir aber ein Fensterhandle holen und mit SendMessage oder PostMessage in das Messagequeue des Fensters schreiben. Nicht so trivial ...
Steffen
SendInput versucht eine einfache Keyboard Emulation. Heißt, der gesendete Input landet auf dem Fenster das gerade den Keyboard Focus hat (so wie bei einer normalen Tastatureingabe). Welches Verhalten du aber eigentlich willst (also welches Fenster nun welchen Input empfangen soll) habe ich noch nicht verstanden. Sicherlich musst du dir aber ein Fensterhandle holen und mit SendMessage oder PostMessage in das Messagequeue des Fensters schreiben. Nicht so trivial ...
Steffen
Verwirrend. Immer nur ein Fenster kann den Keyboard Focus haben.
Wenn ich das halbwegs verstanden habe, müsstest du in deinem Programm einen Globalen Keyboard Hook anlegen. Das ist dann wie eine Rohrleitung. Tastatureingaben gehen erst mal zum Hook, dort kannst du programmatisch auswerten was angekommen ist. Dann geht die Tastatureingabe an das Programm mit dem Focus. Kannst du ja mal ausprobieren.
Steffen
Wenn ich das halbwegs verstanden habe, müsstest du in deinem Programm einen Globalen Keyboard Hook anlegen. Das ist dann wie eine Rohrleitung. Tastatureingaben gehen erst mal zum Hook, dort kannst du programmatisch auswerten was angekommen ist. Dann geht die Tastatureingabe an das Programm mit dem Focus. Kannst du ja mal ausprobieren.
Steffen