Welche Ereignisabfrage bei möglicher Konsoleneingabe?
-
Hi,
ich komm grad irgendwie gar nicht weiter.
Ich möchte per Konsole mein CLR-Prog jederzeit beenden können, d.h., gibt jmd in die Konsole beispielsweise "exit" ein.
Ich hab keine Ahnung wie ich das machen soll.
Mit scanf geht's nicht, da scanf auf eine Konsoleneingabe wartet, so dass das Prog nicht weiter ausgeführt wird, solange nichts eingegeben wird.GetMessage() bzw TranslateMessage() geht nicht, da ich ja kein richitges Fenser habe -> nur die Konsole.
Welche Ereignisabfrage könnte ich denn verwenden??
danke im Voraus!
-
Es wird nicht richtig klar, ob dein Programm ein Konsolenprogramm oder ein Windowsprogramm (mit WinApi) sein soll!
Vielleicht falsches Forum? Ereignisse also Messages gibt es nur in Windowsanwendungen mit dem entsprechendem Überbau der WinApi. Wenn du kein WinMain mit Fenstern hast, kriegst du auch keine Ereignisse zu sehen!
-
berniebutt schrieb:
Es wird nicht richtig klar, ob dein Programm ein Konsolenprogramm oder ein Windowsprogramm (mit WinApi) sein soll!
Vielleicht falsches Forum? Ereignisse also Messages gibt nur in Windowsanwendungen mit dem entsprechendem Überbau der WinApi. Wenn du kein WinMain mit Fenstern hast, kriegst du auch keine Ereignisse zu sehen!Das ist ein reines Konsolenprogramm - also ohne WINAPI.
Bin schon so weit, dass das Programm erst dann stoppt, wenn etwas in die Konsole eingegeben wurde.
Allerdings muss dann immer danach Return gedrückt werden, sonst wartet das Prog solange bis Return gedrückt wird. Und das will ich eben vermeiden.mein Code:
int main(array<System::String ^> ^args) { SetConsoleTitle(L"MeinProgramm"); HWND hConsole = FindWindow(NULL, L"MeinProgramm"); CString sEingabe; bool bKeyPressed = System::Console::KeyAvailable ; //wurde eine Taste gedrückt? if(bKeyPressed == true) // nur wenn eine Taste gedrückt wurde, soll geprüft werden, ob es sich z.B um "Exit" handelt sEingabe = System::Console::ReadLine() ; // ReadLine() wartet solange bis etwas eingegeben wurde und RETURN gedrückt wird return 0; }Das Problem ist, dass ich nach der Ausführung von ReadLine() "Return" drücken muss, da das Programm darauf wartet und nicht weiter läuft.
Das Eingetippte wird auch erst NACH dem Befehl ReadLine() in die Konsole geschrieben.Wie kann ich das Eingetippte lesen? Vielleicht mit einer anderen Funktion??
Vielleicht mit dem Tatsenpuffer???
-
Habs hinbekommen

man, man.
im Prinzip total einfach, aber wenn man nicht auf die Befehle kommen...int i = 0; char dd[20] = {0}; while(kbhit() ) { dd[i] = getch(); i++; }
-
hä? Ist das jetzt C/C++/C#/WinAPI WTF?!?^^
-
cooky451 schrieb:
hä? Ist das jetzt C/C++/C#/WinAPI WTF?!?^^
WinApi schon mal nicht, ansonsten native C. Kann man mit kbhit sehr viel besser machen. Er hat es aber doch hinbekommen und ist vorerst zufrieden!

daddeldu! :p
-
CLI meine ich
EDIT: Ich meine den ersten Code