Seite 1 von 2
Tastendrücke abfangen
Verfasst: 18.02.2011 18:24
von SebastianJu2
Das mit dem Tastendruck abfangen ist wohl doch nicht so leicht zu finden...

Ich will, wenn ein Formular geöffnet ist, Tastendrücke auf dem Keyboard abfangen. Ob die weitergegeben werden an das Formular ist in meinem Fall erstmal zweitens.
Ich habe gesucht und eine Möglichkeit gefunden die allerdings eine offene Konsole benötigt. Das ist vermutlich nicht was ich suche. Dann gibt es noch eine Möglichkeit die ist aber wohl für Spiele gedacht und braucht einen entsprechenden Bildschirm. Auch nichts für eine Desktopsoftware.
Gibt es da noch mehr? Ich habe nichts weiteres gefunden...
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 18:26
von RSBasic
Vielleicht mit Hilfe der WinAPI?
Code: Alles auswählen
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Repeat
EventID=WaitWindowEvent()
If GetAsyncKeyState_(#VK_A)
MessageRequester("","Taste wurde gedrückt",0)
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 18:35
von ts-soft
Besser auf ein Event reagieren, sowas kann man doch nicht ins EventLoop einbauen
Code: Alles auswählen
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Repeat
EventID=WaitWindowEvent()
If eventID = #WM_KEYDOWN And EventwParam() = 'A'
MessageRequester("","Taste wurde gedrückt",0)
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Noch besser wäre natürlich in einem Callback, aber ...
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:10
von SebastianJu2
Werd ich mal testen... danke...
Kann man einfach so alle Befehle der Win-api ausführen?
EventwParam im 2. Beispiel ist aber kein Befehl aus Windows. Nur wieso gibt es dazu keinen Eintrag in der Hilfe? Und wo gibt es eine Auflistung der WM-Konstanten?
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:15
von RSBasic
SebastianJu2 hat geschrieben:Und wo gibt es eine Auflistung der WM-Konstanten?
Menü "Werkzeuge" > Eintrag "Strukturverzeichnis" > Reiter "Konstanten"
\\Edit:
SebastianJu2 hat geschrieben:EventwParam im 2. Beispiel ist aber kein Befehl aus Windows. Nur wieso gibt es dazu keinen Eintrag in der Hilfe?
http://www.purearea.net/pb/download/tut ... ling.htm#4
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:25
von SebastianJu2
Dann sind das die Konstanten die PB kennt. Nur wenn diese Konstanten nicht dahingehend dokumentiert sind bei welchen Befehlen sie gebraucht werden bzw die Befehle zwar im Changelog zu finden sind aber ohne Hilfeeintrag wie findet man sie dann wenn man sie braucht?
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:30
von STARGÅTE
Über die WIN-API hilfe (runterladbar aus dem Netz) oder durch Beispiele im Forum/Archiv von PureBasic
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:37
von SebastianJu2
Dann sind #WM_KEYDOWN und EventwParam() beide auch Teil der Windows API? Zumindest der letzte Befehl ist doch aus Purebasic oder? Zumindest erscheint er im Changelog. Aber eben ohne Hilfeeintrag. Google findet auch nur Einträge von purebasic.com.
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:38
von SebastianJu2
Scheinen inoffizielle Befehle zu sein...
"PB bietet aber mit EventlParam() und EventwParam() 2 Funktionen, welche zwar nicht offiziell unterstützt werden, aber bisher einige PB-Versionen überstanden haben und wahrscheinlich niemals verschwinden werden, obwohl das theoretisch jederzeit passieren könnte. "
Re: Tastendrücke abfangen
Verfasst: 18.02.2011 19:44
von ts-soft
SebastianJu2 hat geschrieben:Scheinen inoffizielle Befehle zu sein...
"PB bietet aber mit EventlParam() und EventwParam() 2 Funktionen, welche zwar nicht offiziell unterstützt werden, aber bisher einige PB-Versionen überstanden haben und wahrscheinlich niemals verschwinden werden, obwohl das theoretisch jederzeit passieren könnte. "
Deshalb schrieb ich ja, besser ein Callback nutzen, weil das wird wohl immer funktionieren.
Aber das erschien mir im Moment zu kompliziert für Dich als Einsteiger.