_IsPressed Denkfehler?

  • Wollte ein kleines Tool schreiben um mit der Tasta die Maus zu steuern
    damit ich mich mit ner externen Tasta aufs bett legen kann.

    Problem: Die Abfrage mit 2x IsPressed wird ausgeführt auch wenn ich NICHTS mache o_O

    Ist grad erst ne 5min Version xD

    Spoiler anzeigen
    [autoit]

    ;---------------------------------------------------------------------------—
    ; MouseToKeyboard
    ; By Sen // Christopher Klay
    ;---------------------------------------------------------------------------—
    ; Version - 1.0
    ;---------------------------------------------------------------------------—
    #include <Misc.au3>
    #cs
    25 LEFT ARROW key
    26 UP ARROW key
    27 RIGHT ARROW key
    28 DOWN ARROW key

    [/autoit] [autoit][/autoit] [autoit]

    10 SHIFT key
    11 CTRL key
    #ce
    $Move_Speed = "1"
    $Move_Sensivity = "7"
    $Mouse_Speed = "1"
    $Mouse_Scrolls = "1"

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $MousePos = MouseGetPos()

    [/autoit] [autoit][/autoit] [autoit]

    If _IsPressed("25") Then ;Left
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("26") Then ;Up
    MouseMove($MousePos[0], $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") Then ;Right
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("28") Then ;Down
    MouseMove($MousePos[0], $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") & _IsPressed("26") Then ;LeftUp
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10)
    WEnd

    [/autoit]

    Edit:

    [autoit]

    ElseIf _IsPressed("25") & _IsPressed("26") Then ;LeftUp

    [/autoit]


    Wtf muss ich müde sein.

    [autoit]

    ElseIf _IsPressed("25") And _IsPressed("26") Then ;LeftUp

    [/autoit]


    Wäre richig gewesen.
    Aber mal ne andere Frage, jemand ne Idee wie mans leichter hinbekommt?
    "LeftUp" wird z.b. nich ausgeführt weil ja "left" oder "up" immer zuerst kommen :s

    Einmal editiert, zuletzt von Sen (3. Oktober 2010 um 02:13)

  • Ein Blick in die Hilfe hätte vl. geholfen :

    [autoit]

    If <expression> Then
    statements
    ...
    [ElseIf expression-n Then
    [elseif statements ... ]]
    ...
    [Else
    [else statements]
    ...
    EndIf

    [/autoit]


    wenns danch immer noch nicht geht sag bescheid

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Also ich glaube was du heißt :

    Wenn das erste nicht ist dann das 2 wenn das nicht ist das 3 etc.

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Da's auch richtig so.

    "If -> Else" würde ergeben das die Abfrage danach immer zustimmt.
    Habs mit Diagonal jetzt auch hinbekommen, musste nur n den anfang :P

  • Zitat

    Da's auch richtig so.

    "If -> Else" würde ergeben das die Abfrage danach immer zustimmt.
    Habs mit Diagonal jetzt auch hinbekommen, musste nur n den anfang :P


    Also geht nun allesß

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Jup geht bestens.
    Die Diagonalen Abfragen mussten nur nach oben in der Abfrage.

    [autoit]

    ;---------------------------------------------------------------------------—
    ; MouseToKeyboard
    ; By Sen // Christopher Klay
    ;---------------------------------------------------------------------------—
    ; Version - 1.0
    ;---------------------------------------------------------------------------—
    #include <Misc.au3>
    #cs
    25 LEFT ARROW key
    26 UP ARROW key
    27 RIGHT ARROW key
    28 DOWN ARROW key

    [/autoit][autoit][/autoit][autoit]

    10 SHIFT key
    11 CTRL key
    #ce
    $Move_Speed = "1"
    $Move_Sensivity = "7"
    $Mouse_Speed = "1"
    $Mouse_Scrolls = "1"

    [/autoit][autoit][/autoit][autoit]

    While 1
    $MousePos = MouseGetPos()

    [/autoit][autoit][/autoit][autoit]

    If _IsPressed("25") And _IsPressed("26") Then ;LeftUp
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") And _IsPressed("26") Then ;RightUp
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") And _IsPressed("28") Then ;LeftDown
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") And _IsPressed("28") Then ;RightDown
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") Then ;Left
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("26") Then ;Up
    MouseMove($MousePos[0], $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") Then ;Right
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("28") Then ;Down
    MouseMove($MousePos[0], $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") And _IsPressed("26") Then ;LeftUp
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Sleep(10)
    WEnd

    [/autoit]

    Ich code's eben fertig (mit Zusatztasten, mausclicks etc) und mach dann nachher nen Thread :P

  • Hehe okay ^^ Schade das ich net helfen konnte ^^

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Hm, ein Problem hab ich noch.
    Wie kann ich die normale Funktion der Tasten außer Kraft setzen?
    HotKeySet würde nich gehen denke ich, da dann auch die Pressed Abfragen nicht durchkommen oder?

  • Das weis ich net :0
    Warum möchtest du den das den?

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Als Beispiel: Maus Scrollen.
    Wird über Strg+Hoch/Runter gehen.

    Das führt aber in sehr vielen Fällen zu nem Problem mit der Schrift..
    da sie durch Strg+Mausrad kleiner/größer wird xD

  • Also Bei Strg+BildHoch/BildRunter wechselt er bei mir die Taps :0

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Strg + Pfeiltaste wird scrollen.
    Das verkleinert/vergrößert die Schrift aber, weil du in dem Momente
    Strg drückst und das Script MouseWheel macht ;P

    Okay, folgendes Problem immo.
    Wenn ich die Tasten über WPI, BlockEx, etc sperre geht auch _IsPressed nicht (schon klar).
    Wie krieg ichs jetzt aber hin das Windows beim druck auf die Pfeiltasten nur macht was ich will
    und keine Startfunc?

    Edit: HotKeySet blockiert _IsPressed doch nicht o_O

    Soweit wie's bis jezt läuft:
    Pfeiltasten = Maus
    Alt + Links/Rechts = Klicks
    Alt + Runer/hoch = Mausrad

    & Update.
    Strg+M = On/Off

    [autoit]

    ;---------------------------------------------------------------------------—
    ; KeyMouse
    ; By Sen // Christopher Klay
    ;---------------------------------------------------------------------------—
    ; Version - 1.0 Beta
    ;---------------------------------------------------------------------------—
    #include <Misc.au3>

    [/autoit][autoit][/autoit][autoit]

    $Move_Speed = "0"
    $Move_Sensivity = "2"
    $Mouse_Speed = "0"
    $Mouse_Scrolls = "1"
    $ClickSleep = "0.7" * 1000

    [/autoit][autoit][/autoit][autoit]

    $KeyMouse = True

    [/autoit][autoit][/autoit][autoit]

    HotKeySet("{LEFT}", "Dummy")
    HotKeySet("{RIGHT}", "Dummy")
    HotKeySet("{DOWN}", "Dummy")
    HotKeySet("{UP}", "Dummy")
    HotKeySet("^m", "TriggerKeyMouse")

    [/autoit][autoit][/autoit][autoit]

    While 1
    If $KeyMouse = True Then
    $MousePos = MouseGetPos()
    If _IsPressed("12") And _IsPressed("26") And _IsPressed("28") Then ;MiddleMouse
    MouseClick("Middle", $MousePos[0], $MousePos[1], 1, $Mouse_Speed)
    Sleep($ClickSleep)
    ElseIf _IsPressed("12") And _IsPressed("25") Then ;LeftMouse
    MouseClick("Left", $MousePos[0], $MousePos[1], 1, $Mouse_Speed)
    Sleep($ClickSleep)
    ElseIf _IsPressed("12") And _IsPressed("27") Then ;RightMouse
    MouseClick("Right", $MousePos[0], $MousePos[1], 1, $Mouse_Speed)
    Sleep($ClickSleep)
    ElseIf _IsPressed("12") And _IsPressed("26") Then ;WheelUp
    MouseWheel("Up", $Mouse_Scrolls)
    ElseIf _IsPressed("12") And _IsPressed("28") Then ;WheelUp
    MouseWheel("Down", $Mouse_Scrolls)
    ElseIf _IsPressed("25") And _IsPressed("26") Then ;LeftUp
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") And _IsPressed("26") Then ;RightUp
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") And _IsPressed("28") Then ;LeftDown
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") And _IsPressed("28") Then ;RightDown
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1] + $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("25") Then ;Left
    MouseMove($MousePos[0] - $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("26") Then ;Up
    MouseMove($MousePos[0], $MousePos[1] - $Move_Sensivity, $Move_Speed)
    ElseIf _IsPressed("27") Then ;Right
    MouseMove($MousePos[0] + $Move_Sensivity, $MousePos[1], $Move_Speed)
    ElseIf _IsPressed("28") Then ;Down
    MouseMove($MousePos[0], $MousePos[1] + $Move_Sensivity, $Move_Speed)
    EndIf
    EndIf
    Sleep(10)
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func TriggerKeyMouse()
    If $KeyMouse = True Then
    HotKeySet("{LEFT}")
    HotKeySet("{RIGHT}")
    HotKeySet("{DOWN}")
    HotKeySet("{UP}")
    HotKeySet("^m", "TriggerKeyMouse")
    $KeyMouse = False
    Else
    HotKeySet("{LEFT}", "Dummy")
    HotKeySet("{RIGHT}", "Dummy")
    HotKeySet("{DOWN}", "Dummy")
    HotKeySet("{UP}", "Dummy")
    HotKeySet("^m", "TriggerKeyMouse")
    $KeyMouse = True
    EndIf
    EndFunc ;==>TriggerKeyMouse

    [/autoit][autoit][/autoit][autoit]

    Func Dummy()
    EndFunc ;==>Dummy

    [/autoit]

    3 Mal editiert, zuletzt von Sen (3. Oktober 2010 um 07:59)

    • Offizieller Beitrag

    _IsPressed ist immer eine unglückliche Lösung.
    Um das "geschmeidig" :D zu programmieren müßtest du mit Hooks arbeiten. Ob du das aber gebacken bekommst, da habe ich so meine Zweifel. Dazu solltest du schon sehr fest im Sattel sitzen. Zumal das System Fehler im Hook übel nimmt und z.B. einfriert/abschmiert. ;)
    Kannst dir ja mal das Hilfebeispiel zu Hooks reinziehen. Wenn du das problemlos verstehst, kannst du ja versuchen es für dich umzustricken.

  • Also bei mir läufts relativ geschmeidig (allerdings noch langsam was aber an der Geschwindigkeit die ich festgelegt hab liegt xD)
    und ruckelfrei bei 0-2% CPU o.o

  • naja vielleicht nicht Innovativ aber versuch doch einfach mal die Tastatur Maus von Windows :)
    einfach alt+shift+num drücken.