Tastendrücke abfangen

Anfängerfragen zum Programmieren mit PureBasic.
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Tastendrücke abfangen

Beitrag 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...
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Tastendrücke abfangen

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Tastendrücke abfangen

Beitrag von ts-soft »

Besser auf ein Event reagieren, sowas kann man doch nicht ins EventLoop einbauen :freak:

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 ...
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Tastendrücke abfangen

Beitrag 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?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Tastendrücke abfangen

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Tastendrücke abfangen

Beitrag 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?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Tastendrücke abfangen

Beitrag von STARGÅTE »

Über die WIN-API hilfe (runterladbar aus dem Netz) oder durch Beispiele im Forum/Archiv von PureBasic
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Tastendrücke abfangen

Beitrag 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.
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Tastendrücke abfangen

Beitrag von SebastianJu2 »

Scheinen inoffizielle Befehle zu sein... :o

"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. "
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Tastendrücke abfangen

Beitrag von ts-soft »

SebastianJu2 hat geschrieben:Scheinen inoffizielle Befehle zu sein... :o

"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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten