Win 8: BlitzPlus nimmt keine Tastatureingaben an
Übersicht

funkmaster5000Betreff: Win 8: BlitzPlus nimmt keine Tastatureingaben an |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das Problem wird schon bei folgendem und simplen Programm deutlich:
Code: [AUSKLAPPEN] While Not KeyHit(1) Print "a" Wend End Ich kann wie verrückt auf ESC hauen, es passiert nichts! 2 Tastaturen habe ich bereits durchprobiert! Hat jemand ähnliche Erfahrungen? EDIT: Betroffen ist wohl nur der reine Textmodus. Das funktioniert: Code: [AUSKLAPPEN] Graphics 640,480,32,2
SetBuffer BackBuffer() While Not KeyHit(1) Cls Text 0,0, "a" Flip Wend End 2 EDIT: Es ist tatsächlich nur die Konsole betroffen. Input funktioniert komischerweise! |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Erstes Beispiel würde doch bei BlitzPlus in der Console ausgeführt, richtig?
Dann ists klar, dass es nicht geht, denn die KeyHit/KeyDown nutzen die DirectX Input funktionen -> diese werden für die Console nicht geladen.... Das war aber nicht erst unter 8 so, sondern afaik immer. Ist halt so. lg, Count-Doku |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh mann! Das macht natürlich Sinn! Das ist mir noch nie aufgefallen, man macht ja eigentlich selten (nie) was im Textmodus. Danke.
EDIT: Wobei sich der Textmodus doch mit ESC beenden lassen sollte? Wie soll ich das denn anders machen? Getkey basiert wohl auch auf DirectX, ich bekomme nämlich ebenfalls keinen Wert zurückgeliefert. |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ehm nein, die Konsole kriegst du nicht mit ESC zu. Entweder halt das "Schliessen"-Kreuz oder per Input.
Müsstest das ganze halt entweder A) mit mehreren Threads laufen lassen ( FastPointer Lib kann das), B) dir iwie ein eigenes Input schreiben oder C) einfach regelmäßig bei Benutzereingabe per Input eine möglichkeit zum beenden geben. lg, Count-Doku |
||
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Graphics 800, 600 ![]() |
||
Version: BlitzPlus / Blitz+ |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und was genau soll das bringen Knorx ![]() |
||
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das er mit "Print" ins Grafikfenster schreibt und so KeyHit empfängt.
EDIT: Halt wieder zwei Parameter (0, 0) weniger... war nur als Scherz gemeint ![]() |
||
Version: BlitzPlus / Blitz+ |
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich kann man mit Graphics ein Fenster aufmachen und dann Print und Input und Keyhit/Keydown anwenden. Aber es gibt nunmal Anwendungen für die es nicht erforderlich oder nicht möglich ist ein DX Fenster aufzumachen - schonmal an Server gedacht? Die haben unter Umständen keine Graka und machen alles mit der CPU, dann für eine einfache Ausgabe ein DX fenster? Omg
@funkmaster, wenn ich dazu komme schreibe ich nachher ein Multithreaded Programm für Input in der Console... |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es geht übrigens um einen Server...
Das Problem ist, dass ich ihn natürlich sauber herunterfahren will, damit er auch CloseTCPStream ordentlich ausführt. Nur steht dieser Befehl außerhalb meiner Schleife, die mit ESC beendet werden soll. Ich weiß nicht, was ein Druck auf das Kreuz für Auswirkungen hat. Ich denke, CloseTCPStream wird schon seine Daseinsberechtigung haben, deswegen würde ich es gerne ausführen lassen. Außerdem habe ich eine Art Protokoll, das den Clients dann mitteilt, dass der Server geschlossen wurde. Das wird ebenfalls erst nach der Schleife ausgeführt. |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
So habe jetzt ein Proggi dafür geschrieben. Ist reichlich kommentiert, sollte also eigentlich verständlich sein.
Zum auführen brauchst du die Fastpointer DLL https://www.blitzforum.de/foru...hp?t=36160 ganz oben ist der Download, aber auch ruhig den Thread durchlesen, Pummelie erklärt da ganz gut wies funktioniert, das ganze läuft auch mit b+. Hier mein Code: BlitzBasic: [AUSKLAPPEN]
Schaus dir mal an - ist sicher keine superlösung aber funktioniert. lg, Count-Doku |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst auch die GetAsyncKeyState von der Winapi nehmen.
BlitzMax: [AUSKLAPPEN] Extern Die liefert dir true zurück, wenn die gewählte Taste gedrückt wurde. Musst aber aufpassen: diese Funktion ignoriert, ob dein Fenster im Vordergrund ist oder nicht, das heißt, wenn du ESC drückst, während ein anderes Fenster im Vordergrund ist, dann schließt sich dein Programm trotzdem! |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group