Befehl auf Tastendruck ausführen (CMD)



  • Hallo!

    Mein Problem geht so:

    set /P eingabe=Etwas eingeben:
    

    Das funktioniert prima (wer den Befehl nicht kennt: Es ist dasselbe wie "Input eingabe$" auf Quickbasic). Aber ich möchte, dass mein Programm einen Befehl direkt ausführt, nachdem ich zB. die Taste M gedrückt habe und nicht erst, nachdem ich mit Enter bestätigt habe.

    Das Ganze brauche ich für ein Game. Das könnte vielleicht noch zu besserem Verständnis führen, denn wer will, dass sich eine Figur erst nach rechts bewegt, wenn man R und ENTER drückt?

    echo Danke bereits für alle Antworten,
    echo Mr. Fossey



  • Hallo!
    Ich denke das sollte dein Problem lösen:

    #include <windows.h>
    
    class
    {	
    public:
    	bool Down()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_DOWN))
    				return true;
    		else
    				return false;
    	}
    	bool Left()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_LEFT))
    				return true;
    		else
    				return false;
    	}
    	bool Right()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_RIGHT))
    				return true;
    		else
    				return false;
    	}
    	bool Up()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_UP))
    				return true;
    		else
    				return false;
    	}
    }Arrow;
    


  • Das ist aber C++-Code und ich rede von DOS. Sorry, hätte ich wohl noch konkreter schreiben müssen. Danke trotzdem.

    Mit DOS meine ich eben CMD oder BATCH. Aber was ist jetzt die richtige Bezeichnung für die Programmiersprache?



  • Mr. Fossey schrieb:

    Das ist aber C++-Code und ich rede von DOS. Sorry, hätte ich wohl noch konkreter schreiben müssen. Danke trotzdem.

    Mit DOS meine ich eben CMD oder BATCH. Aber was ist jetzt die richtige Bezeichnung für die Programmiersprache?

    Ähhhhhhhhh... - Diese Seite heisst doch schon nur "c-plusplus.net"😕



  • RealC++ schrieb:

    #include <windows.h>
    
    class
    {	
    public:
    	bool Down()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_DOWN))
    				return true;
    		else
    				return false;
    	}
    	bool Left()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_LEFT))
    				return true;
    		else
    				return false;
    	}
    	bool Right()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_RIGHT))
    				return true;
    		else
    				return false;
    	}
    	bool Up()
    	{
    		if((GetForegroundWindow()==GetConsoleWindow())&&GetAsyncKeyState(VK_UP))
    				return true;
    		else
    				return false;
    	}
    }Arrow;
    

    ^^ völlig übetrieben. weder if/else noch 'class' sind hier sinnvoll. einfach:

    ...
    int Down()
    {
      return (GetForegroundWindow()==GetConsoleWindow()) && GetAsyncKeyState(VK_DOWN);
    }
    ...
    // usw.
    ...
    

    ^^oder so ähnlich (ungetestet).
    🙂



  • Ja, wie auch immer... - Als Batch kann man die Sache eh nicht realisieren.



  • Gibt es denn keinen Batch-befehl für die Tastaturabfrage? Wenn man schon ein "Input" realisieren kann, dann doch auch einen normalen Tastendruck (was ja sogar einfacher sein sollte)!

    @ realC++: Dieses Unterforum heisst "DOS und Win32-Konsole"



  • Mr. Fossey schrieb:

    Gibt es denn keinen Batch-befehl für die Tastaturabfrage? Wenn man schon ein "Input" realisieren kann, dann doch auch einen normalen Tastendruck (was ja sogar einfacher sein sollte)!

    @ realC++: Dieses Unterforum heisst "DOS und Win32-Konsole"

    Wie ich oben geschrieben habe: Es ist NICHT MÖGLICH. Aber vielleicht versuchst du es ja, jetzt da du mit Batch nicht weiter kommst, einfach mal mit C oder C++? Wie du's anstellen könntest steht ja ebenfalls oben.



  • RealC++ schrieb:

    Mr. Fossey schrieb:

    Gibt es denn keinen Batch-befehl für die Tastaturabfrage? Wenn man schon ein "Input" realisieren kann, dann doch auch einen normalen Tastendruck (was ja sogar einfacher sein sollte)!

    @ realC++: Dieses Unterforum heisst "DOS und Win32-Konsole"

    Wie ich oben geschrieben habe: Es ist NICHT MÖGLICH. Aber vielleicht versuchst du es ja, jetzt da du mit Batch nicht weiter kommst, einfach mal mit C oder C++? Wie du's anstellen könntest steht ja ebenfalls oben.

    doch mit choice sollte das gehen:
    http://ss64.com/nt/choice.html

    allerdings ist die choice.com wohl nicht auf allen Systemen automatisch vorhanden... vielleicht kannst du die ja direkt in dein Projekt einbinden... (datei im selben verzeichnis und aus der batch datei darauf zugreifen)
    Müsste man mal probieren.


Anmelden zum Antworten