Tastenabfrage im Hintergrund
Übersicht

![]() |
YuenBetreff: Tastenabfrage im Hintergrund |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich würde gerne wissen wie ich eine Tastenabfrage bei einem nicht aktiven Fenster anstelle ? Ich hab folgenden Beitrag gefunden : https://www.blitzforum.de/foru...highlight=, dieser ist aber für BB und nicht für BM .... wie realisiere ich das in BlitzMax ? MFG Yuen |
||
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Strict Extern "win32" Function GetAsyncKeyState(key:Int) End Extern Graphics 800,600,0 Repeat Cls Local state:Int If getAsyncKeyState(32) Print "SPACE GEDRÜCKT" EndIf Flip Until KeyHit(KEY_ESCAPE) Funktionen der WinAPI die nicht schon im win32 Modul (pub.mod Ordner) definiert sind, kannst du über extern aufrufen. Mfg |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ganz so einfach ist es nicht. Die Funktion kann mit den BlitzMax-Scancodes nix anfangen, sondern braucht die Virtual-Key Codes von Windows ( http://msdn2.microsoft.com/en-...45540.aspx ). Außerdem ist der Rückgabewert nicht True oder False, sondern enthält in seinen einzelnen Bits noch weitere Informationen. Mehr dazu hier ( unter "Return Value" ) -> http://msdn2.microsoft.com/en-...46293.aspx | ||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ChristianK hat Folgendes geschrieben: Ganz so einfach ist es nicht. Die Funktion kann mit den BlitzMax-Scancodes nix anfangen, sondern braucht die Virtual-Key Codes von Windows ( http://msdn2.microsoft.com/en-...45540.aspx ). Außerdem ist der Rückgabewert nicht True oder False, sondern enthält in seinen einzelnen Bits noch weitere Informationen. Mehr dazu hier ( unter "Return Value" ) -> http://msdn2.microsoft.com/en-...46293.aspx
Falsch. Funktioniert mit den BMax-KeyCodes. Genauso wie bei z.B. der WinAPI-Funktion keybd_event() um eine Taste virtuell zu drücken. Nur B3D und B+ haben andere KeyCodes. ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt, die KeyCodes sind gleich. Sorry.
Aber Sucos Beispiel geht trotzdem nicht, wegen dem Rückgabewert. ![]() |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich versteh nicht ganz wo dein Problem ist, mein Beispiel funktioniert wie es soll. Es zeigt wie man auf die WinApi Funktion Zugriff hat (Ich denke mal das war sein Hauptproblem) und die Sache mit der Space-Taste war einfach nur ein Test, ob das ganze auch dort ankommt, wenn ein anderes Fenster aktiviert ist.
Ich hatte nicht vor ihm einen WinAPI Crashkurs zu verpassen, das wollte er auch sicher nicht. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
YuenBetreff: Re: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Suco-X hat Folgendes geschrieben: Code: [AUSKLAPPEN]
Strict Extern "win32" Function GetAsyncKeyState(key:Int) End Extern Graphics 800,600,0 Repeat Cls Local state:Int If getAsyncKeyState(32) Print "SPACE GEDRÜCKT" EndIf Flip Until KeyHit(KEY_ESCAPE) Funktionen der WinAPI die nicht schon im win32 Modul (pub.mod Ordner) definiert sind, kannst du über extern aufrufen. Mfg Danke genau das habe ich gesucht, mehr wollte ich nicht ^^ MFG Yuen [EDIT] Hmm ich hab verstanden das ich als Rückgabewert nicht True oder False bekomme ... wie fange ich aber den Rückgabewert ab und benutze ihn damit eine If-Abfrage möglich ist ? Ich möchte die getippten Tasten in eienr txt abspeichern. MFG Yuen |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir geht es nicht. ![]() Nur, wenn man die Abfrage so schreibt: Code: [AUSKLAPPEN] If ( GetAsyncKeyState( 32 ) Shr 16 ) And 1
|
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
![]() |
Suco-XBetreff: .... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soweit ich das sehe muss man halt drauf achten ob das erste Bit gesetzt ist und wenn man das nicht macht, wird die Ausgabe halt ein wenig in die Länge gezogen, aber funktioniert hat das Beispiel ausreichend (bei mir).
Um dem ein Ende zu bereiten habe ich mir das ganze mal kurz angeschaut und zur Abfrage und Speicherung von Texten bin ich zu dieser Lösung gekommen: Code: [AUSKLAPPEN] Strict Extern "win32" Function GetAsyncKeyState(key:Int) Function VkKeyScanA(char:Int) End Extern Graphics 800,600,0 Global buf:String = "" OnEnd(out) Function out() Print "Ausgabe: "+buf End Function Repeat Cls Local state:Int For Local i:Int = 32 Until 256 state = getAsyncKeyState(VkKeyScanA(i)) If state & $1 buf:+Chr(i) Exit EndIf Next Flip Until KeyHit(KEY_ESCAPE) Neu ist hier die Funktion VkKeyScanA um einen VK umzuwandeln. Bei Punkten und anderen Zeichen war die Ausgabe halt nicht wie gewollt. Am Ende wird das geschreibsel in die Konsole ausgegeben. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group