Gibt es eine Funktion mit der ich auslesen kann ob eine Taste gedrückt wurde? Also das KeyDown Event.
Diese soll halt nur dann eine 1 zurückgeben wenn die Taste gedrückt wurde, wenn diese aber gehalten wird soll dann eine 0 zurückgegeben werden.
Gibt es eine Funktion mit der ich auslesen kann ob eine Taste gedrückt wurde? Also das KeyDown Event.
Diese soll halt nur dann eine 1 zurückgeben wenn die Taste gedrückt wurde, wenn diese aber gehalten wird soll dann eine 0 zurückgegeben werden.
Hi,
dir wird sicherlich die Funktion
[autoit]_IsPressed()
[/autoit]weiterhelfen
Gruß
Prajoss
Ne die hilft nicht.
Wie gesagt ich will nicht auslesen ob eine Taste gedrückt IST sondern ob sie gerade gedrückt WURDE.
Ums also in Bits zu sagen. Ich brauch etwas was mir die Flanke von 0 auf 1 ausließt und nicht etwas was mir die 1 ausließt.
If _IsPressed("XY") Then
While _IsPressed("XY")
Sleep(10)
WEnd
EndIf
Man sollte halt ein bischen selbst grübeln
Ich geb nur ungern Komplettlösungen an, man lern am meisten wenn man etwas selbst löst.
Das Programm soll dann ja nicht schlafen..
Ne aber ich hab schon selber rumprobiert:
[autoit]
$is_actually_pressed = False
While 1
Select
Case _isPressed("iwas") And $is_actually_pressed = False
$is_actually_pressed = True
;hier wird was ausgeführt
Case Not _isPressed("iwas")
$is_actually_pressed = False
EndSelect
WEnd
Hier hab ich nur große Probleme mit den "Case Not" Anweisungen.
Dort wird iwie die Case-Anweisung unterbrochen und neu gestartet oder iwie sowas. Habs noch nicht genau herausgefunden.
Wenn ich einmal eine Taste betätigt habe wird der Code ausgeführt, wenn ich sie nochmal betätige passiert nichts mehr.
dann mach es doch so:
$is_actually_pressed = False
While 1
Select
Case _isPressed("iwas") And $is_actually_pressed = False
$is_actually_pressed = True
;hier wird was ausgeführt
Case Else
$is_actually_pressed = False
EndSelect
WEnd
Ich glaube du hast meinen Code falsch verstanden.
Sobald die Taste gedrückt wird, führt er einen Befehl aus und danach
wartet er bis die Taste losgelassen wird! (das wolltest du doch)
Sleep(10) sind 10 ms, da schläft er nicht wirklich
While $Programm_laueft
[/autoit][autoit][/autoit][autoit]If _IsPressed("XY") Then
;ZÄHLE HOCH oder tu was anderes
While _IsPressed("XY")
Sleep(10)
WEnd
EndIf
WEnd
[/autoit]$key = 26 ;~ Pfeil_Oben_Taste
$a_R = DllCall("user32.dll", "int", "GetAsyncKeyState", "int", '0x'&$key)
MsgBox( 0, "Tastenstatus:", $a_r[0])
also die funktion die mit dem DLLCall aufgerufen wird gibt folgendes zurück:
0=Taste Wurde nicht gedrückt
1=Taste wurde seit letztem aufruf der Funktion gedrückt, IST GERADE ABER NICHT GEDRÜCKT
Negative Zahl=Taste ist MOMENTAN gedrückt
ich hoffe das hilft dir weiter
Canyon
jo, lass dir zeit.
ich hab eigendlich auch nur die funktion im misc.au3 include angeschaut und verändert, weil _ispressed ja nur 0 und 1 zurückgeben kann
lg
Canyon
mehr braucht er ja an sich nicht
Ich hab jetzt die while Methode genommen.. Ging am einfachsten.
@Canyon: Diese Funktion werde ich dann warscheinlich ab jetzt immer verwenden^^