Tastendruck einlesen

Anfängerfragen zum Programmieren mit PureBasic.
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

Tastendruck einlesen

Beitrag von Martin66119 »

Einen guten Morgen!

Wie kann man einen Tastendruck einlesen. Mit folgendem Code geht es nicht, da für Keyboard-Befehle zuerst OpenScrenn oder OpenWindowedScreen aufgerufen werden muss.

Nun die Frage. Gibt es einen anderen Befehl, mit dem man einen Tastendruck einlesen kann.
Danke für die Hilfe
Martin

Code: Alles auswählen

OpenWindow(0,0,0,400,300,"")
  If InitKeyboard() 
    Repeat    
      ExamineKeyboard()
      FullText$ + KeyboardInkey()     
      If KeyboardReleased(#PB_Key_Back)  
        FullText$ = Left(FullText$, Len(FullText$)-1)
      EndIf
     MessageRequester("Eingabe", FullText$,0)
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
code-tags hinzugefügt. nächstes mal bitte selber dran denken - Kaeru fecit
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

Beitrag von ts-soft »

Die Suchfunktion ist keine Zierde. Hätte Dir alles beantwortet :freak:

http://www.purebasic.fr/german/viewtopic.php?t=4370

Ist aber in den meisten Fensteranwendungen unnötig. Kann mir eigentlich
nur Malprogramm mit Tastaturunterstützung vorstellen.

Normal reichen Keyboardshortcuts und EditControls sollte man besser
Subclassen.
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
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

ts-soft hat geschrieben: Normal reichen Keyboardshortcuts und EditControls sollte man besser
Subclassen.
Vorsicht! Das ist das Anfänger-Board... :wink:
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

Beitrag von ts-soft »

real hat geschrieben:Vorsicht! Das ist das Anfänger-Board... :wink:
Das ändert nichts an der Tatsache, das dies die einzig vernünftige Lösung ist.
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
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

Beitrag von ts-soft »

martin66119 hat geschrieben:Hi and good morning!

By using following simple code it is possible to check if a key (e.g. "A") was pressed. But it worked only if the program is running in "foreground" (active window).

May question is:Is it possible to modify the code that pressing a key (e.g. A) change to a specified window independent which window is the active window (foreground window).

I want to implement a function, if someone enter the room and he may not or should not see what I doing.

Thanks in adwance

Code: Alles auswählen


Structure keys 
  Wert.l 
  Name.s 
EndStructure 
NewList Keys.keys() 
AddElement(Keys()) 

ddElement(Keys()) 
Keys()\Wert = #VK_A 
Keys()\Name = "VK_A" 
AddElement(Keys()) 
Keys()\Wert = #VK_B 
Keys()\Name = "VK_B"

OpenWindow(0,0,0,400,300,"Test")

Repeat 
  ereignis.l = WaitWindowEvent() 
  
  If ereignis.l = #WM_KEYDOWN 
    If EventlParam() & %01000000000000000000000000000000 
      Debug Str(EventwParam()) + " ..." 
    Else 
      ForEach Keys() 
        If EventwParam() = Keys()\Wert 
          Debug Keys()\Name + " *was pressed*" 
        EndIf 
      Next 
    EndIf   
  EndIf 

Until ereignis.l = #PB_Event_CloseWindow 
Ich bin begeistert :?

GetAsyncKeyState_(, diese API sollte Dir helfen, ansonsten gibts ja die
Suchfunktion
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
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

ts-soft hat geschrieben:Ich bin begeistert :?
kann ich nachvollziehen. Da fühlt man sich schon ein wenig verarscht.

Grüße ... Kiffi
a²+b²=mc²
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

Beitrag von ts-soft »

Kiffi hat geschrieben:
ts-soft hat geschrieben:Ich bin begeistert :?
kann ich nachvollziehen. Da fühlt man sich schon ein wenig verarscht.

Grüße ... Kiffi
Ich hab so das Gefühl, die halten uns für blöd. Egal, kommt auf meine
Liste für Spezialbehandlung :mrgreen:
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
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

Tastenabfrage

Beitrag von Martin66119 »

Entschuldigt bitte wenn ich die gleiche Frage in beiden foren gestellt habe.
Das ich das geleich Frage, war mir so nicht bewußt. Da kam wohl daher, dass ich die erste Antwort nicht richtig verstanden oder umgesetzt habe.

Werde künftig mich besser an die Regel halten. Sorry nochmal.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

von wann isn seine frage im englischen?

aber is schon witzig.. in deinem ersten posting steht alles drin... topic4370 sollte ausreichen...

> I want to implement a function, if someone enter the room and he may not or should not see what I doing.
naja.. ich bin mal gespannt, wie er das hinbekommen will die richtigen fenster zu verstecken... :lol:
da werden wir bestimmt auch noch mit fragen bombardiert... :roll:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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: Tastenabfrage

Beitrag von ts-soft »

Martin66119 hat geschrieben:Entschuldigt bitte wenn ich die gleiche Frage in beiden foren gestellt habe.
Das ich das geleich Frage, war mir so nicht bewußt. Da kam wohl daher, dass ich die erste Antwort nicht richtig verstanden oder umgesetzt habe.

Werde künftig mich besser an die Regel halten. Sorry nochmal.
Wenn Du hier eine Antwort erhälst, und diese entspricht nicht ganz Deinen
Erwartungen, was dann meist an ungenauer Spezifizierung liegt, solltest Du
doch bitte dort Nachfragen, wo Du bereits eine Antwort erhalten hast und
nicht den Source, der durch meine Antwort gefunden wurde im englischem
Posten um dort dann weitere Infos zu holen.

Ich habe mir die Mühe gemacht, den Link für Dich rausgesucht, weil Du evtl.
mit der Suchfunktion nicht klar kommst und im engl. heimst einer das Danke
ein :mrgreen:

Egal, fröhlichen Mittwoch noch
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