Hi,
kann mir jemand nen Beispiel zu _WinAPI_GetAsyncKeyState bitte geben?
Hab schon einiges probiert jedoch erhalte ich immer 0 zurück.
MfG
Bladerunner
Hi,
kann mir jemand nen Beispiel zu _WinAPI_GetAsyncKeyState bitte geben?
Hab schon einiges probiert jedoch erhalte ich immer 0 zurück.
MfG
Bladerunner
Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
; $hexKey must be the value of one of the keys.
; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is.
Local $a_R = DllCall($vDLL, "short", "GetAsyncKeyState", "int", '0x' & $sHexKey)
If @error Then Return SetError(@error, @extended, False)
Return BitAND($a_R[0], 0x8000) <> 0
EndFunc ;==>_IsPressed
Danke,
meinte aber nur zur Funktion _WinAPI_GetAsyncKeyState.
MfG
Bladerunner
Func _WinAPI_GetAsyncKeyState($iKey)
Local $aResult = DllCall("user32.dll", "short", "GetAsyncKeyState", "int", $iKey)
If @error Then Return SetError(@error, @extended, 0)
Return $aResult[0]
EndFunc ;==>_WinAPI_GetAsyncKeyState
Die gleiche DLL und Funktion wird aufgerufen, _IsPressed benutzt eigentlich _WinAPI_GetAsyncKeyState
(bzw. _IsPressed ist eine Erweiterung die 1 und 0 zurückgibt statt 0 und was das andere war)
Danke
Hab jetzt folgendes versucht:
[autoit]
#include <WinAPI.au3>
While 1
Sleep ( 250 )
$uparrow = _WinAPI_GetAsyncKeyState(26)
If Not $uparrow = 0 Then
MsgBox(0,"Ok", "OK")
ExitLoop
EndIf
WEnd
Kann mir wer sagen warum das nicht funktioniert?
MfG
Bladerunner
Wie bei _IsPressed zu erkennen ist, musst du 0x26 anstelle von 26 verwenden.
#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]Local $uparrow
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(250)
$uparrow = _WinAPI_GetAsyncKeyState(0x26)
If Not $uparrow = 0 Then
MsgBox(0, "Ok", "OK")
ExitLoop
EndIf
WEnd
So funktioniert
Habe aber jetzt ein anderes Problem und wollt nicht extra noch eines Thread aufmachen.
Undzwar hab ich eine Variable, angenommen $gf = "a".
Wie kann ich dann einer andern Variable wenn $gf= "a" ist einen Wert zuweisen?
Habs mit ner If-Schleife hinbekommen, da $gf aber viele verschiedene Werte sein kann ist dadurch das Script sehr lang und unübersichtlich.
[autoit]
If $gh = "a" Then
$xx = 5
EndIf
Ich hoffe ich konnt es einigermasen verständlich ausdrücken.
MfG
Bladerunner
Wenn ich richtig verstanden habe meinst du sowas_
[autoit]
Switch $gf
Case "a"
$x = 5
Case "b"
$x = 6
Endswitch