Hallo zusammen,
Hab etwas gesucht aber nichts gefunden, was mein Problem beheben könnte. Ich habe hier ein Script geschrieben, dass mir einen Tastendruck visuell darstellt. Problem ist nur:
Wenn man Q drückt (wird Q grün),lässt sich W nicht drücken (bleibt rot). Das liegt an dem While _IsKeyPressed -> Sleep. Das ist mir bekannt. Wie könnte ich das umgehen? (will ja nicht endlos verschachteln,bei allen Tasten auf der Tastatur).
Habe mir ein/zwei Lösungen überlegt:
- Funktion die zurückgibt, wenn eine Taste gedrückt UND losgelassen wird, ohne die Verwendung der im Script beschriebenen While-Schleife
- GuiCtrlSetBkColor($Q,0x00FF00) nur temporär gültig (also auf Rot zurückspringen, ohne die Angabe von GuiCtrlSetBkColor($Q,0xFF0000))
Leider konnte ich besagte Lösungen nicht finden. Oder habt ihr noch eine andere Idee?
Hier das Script:
Spoiler anzeigen
#Region ### START INCLUDES ###
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
#EndRegion ### END INCLUDES ###
#Region ### START GLOBAL VARIABLES ###
Global $hDLL = DllOpen("user32.dll")
#EndRegion ### END GLOBAL VARIABLES ###
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 125, 74, 192, 124)
$Q = GUICtrlCreateButton("Q", 0, 0, 20, 20)
GUICtrlSetBkColor(-1, 0xFF0000)
$W = GUICtrlCreateButton("W", 20, 0, 20, 20)
GUICtrlSetBkColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
DllClose($hDLL)
Exit
EndSwitch
[/autoit] [autoit][/autoit] [autoit]If _IsPressed("51", $hDLL) Then
GuiCtrlSetBkColor($Q,0x00FF00)
; Wait until key is released.
While _IsPressed("51", $hDLL)
Sleep(100)
WEnd
GuiCtrlSetBkColor($Q,0xFF0000)
EndIf
If _IsPressed("57", $hDLL) Then
GuiCtrlSetBkColor($W,0x00FF00)
; Wait until key is released.
While _IsPressed("57", $hDLL)
Sleep(100)
WEnd
GuiCtrlSetBkColor($W,0xFF0000)
EndIf
WEnd
[/autoit]Off-Topic: Wie stell ich diesen Windows-sound *ding* aus, bei "illegalem" Tastendruck :D?
Bin für alles offen
Grüße