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 ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 566258
Url: https://administrator.de/forum/c-console-im-hintergrund-laufen-lassen-und-tastenbefehle-weiterhin-aufnehmen-und-ausgeben-566258.html
Ausgedruckt am: 21.12.2024 um 15:12 Uhr
6 Kommentare
Neuester Kommentar
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