Seite 1 von 1
Tastendruck einlesen
Verfasst: 08.08.2007 07:26
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
Verfasst: 08.08.2007 08:19
von ts-soft
Die Suchfunktion ist keine Zierde. Hätte Dir alles beantwortet
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.
Verfasst: 08.08.2007 09:21
von real
ts-soft hat geschrieben:
Normal reichen Keyboardshortcuts und EditControls sollte man besser
Subclassen.
Vorsicht! Das ist das Anfänger-Board...

Verfasst: 08.08.2007 09:42
von ts-soft
real hat geschrieben:Vorsicht! Das ist das Anfänger-Board...

Das ändert nichts an der Tatsache, das dies die einzig vernünftige Lösung ist.
Verfasst: 08.08.2007 10:23
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
Verfasst: 08.08.2007 10:35
von Kiffi
ts-soft hat geschrieben:Ich bin begeistert

kann ich nachvollziehen. Da fühlt man sich schon ein wenig verarscht.
Grüße ... Kiffi
Verfasst: 08.08.2007 10:49
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

Tastenabfrage
Verfasst: 08.08.2007 11:58
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.
Verfasst: 08.08.2007 12:01
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...
da werden wir bestimmt auch noch mit fragen bombardiert...

Re: Tastenabfrage
Verfasst: 08.08.2007 12:19
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
Egal, fröhlichen Mittwoch noch