Nichtblockierend von Konsole lesen?
-
Git es eine Möglichkeit, nichtblockierend von der Konsole zu lesen? getc() und Konsorten erwarten ja leider immer mindestens ein Zeichen bevor es weiter geht, fcntl() gibt es unter Windows nicht und ioctlsocket() funktioniert mit stdin nicht - also wie geht es dann?
-
GetAsyncKeyState()
-
Ähm ja, aber die Funktion geht nicht bei einer Konsolenanwendung!?
-
Ich meine doch!?
#include <iostream> #include "Windows.h" using namespace std; int main() { cout << "idle..." <<endl; while (!GetAsyncKeyState(VK_ESCAPE)); cout << "done" <<endl; }
-
Äh ja, aber der Status _eines_ Keys genügt nicht so ganz, ich möchte im Ergebnis schon einen kompletten String einlesen können. Und mit der Funktion jede mögliche Taste separat testen müssen wäre arg aufwändig...
-
kbhit() überprüft die konsole auf keyboardeingaben und gibt 1 zurück wenn eine eingabe gemacht wurde, sonst 0. den eingegebenen buchstaben kann man dann mit getch() abfragen oder getche() abfragen.
also zB:
#include <iostream.h> #include <conio.h> int main() { while(!kbhit()) { // hier irgendwas solang tun bis eine taste gedrückt wurde cout << "irgendwas" << endl; } // hier mit getch() die taste abfragen die zum rückgabewert 1 von kbhit() geführt hat char eingabe = getch(); // und etwas damit machen cout << eingabe; return 0; }
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum WinAPI in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
tuempl schrieb:
kbhit() überprüft die konsole auf keyboardeingaben und gibt 1 zurück wenn eine eingabe gemacht wurde, sonst 0. den eingegebenen buchstaben kann man dann mit getch() abfragen oder getche() abfragen.
Das klingt prinzipiell gut, nur sagt die Borland-Hilfe, dass diese Funktion unter Win32 nicht verwendet werden sollte ... irgendwas hakt doch da!?
-
Elmi schrieb:
Das klingt prinzipiell gut, nur sagt die Borland-Hilfe, dass diese Funktion unter Win32 nicht verwendet werden sollte ... irgendwas hakt doch da!?
das sie nicht verwendet werden sollte heißt ja nicht, dass sie nicht verwendet werden kann...mir wär das egal...