_IsPressed Problem

  • Morgen leute, ich habe ein Problem mit _isPressed und ich hoffe ihr könnt mir helfen.
    Ich möchte wenn ich z.B. die Taste M drücke einen Bestimmten Textinhalt erstellen was auch geht, bloß er schreibt den Text nicht nur einmal sondern gleich mehrmals. Woran liegt es?

    Code:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    $text = FileOpen("Text.txt", 1)

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

    GUICreate("Test", 300, 40)
    GUICtrlCreateLabel("Drücke M um ein Text mit dem Inhalt M3HM3T zu erstellen", 10, 10)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case _IsPressed("4D") ; Taste M
    FileWrite($text, "M3HM3T")
    EndSwitch

    WEnd

    [/autoit]

    Einmal editiert, zuletzt von m3hm3t (23. Juni 2008 um 15:16)

  • Danke für die Antwort FirePanther aber es klappt leider nicht. Kann mir dabei keiner helfen?

    PS: Bist du Türke FirePanther? :P

  • Ist dir aufgefallen,dass in deinem text noch mehr M`s drinn sind?
    Dadurch,dass send nur tasteneingaben simuliert,wird für jedes M im Text alles nocheinmal geschrieben.

    Also glaube ich zumindestens,son oroblem hatte ich mal mit Hotkeyset !

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Hi,
    in der Zeit in der Taste M gedrückt ist wird der Text auch immer wieder gedrückt. Aber selbst wenn man auf die Taste M nur einmal kurz draufdrückt, wird es erkannt, als ob die Taste öfteres gedrückt wird. Du musst deshalb warten bis die Taste wieder losgelassen worden ist...

    /Edit: Es geht sogar mit dem Code, weil ja kein Send benutzt wird!

    So gehts:

    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    $text = FileOpen("Text.txt", 1)

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

    GUICreate("Test", 300, 40)
    GUICtrlCreateLabel("Drücke M um ein Text mit dem Inhalt M3HM3T zu erstellen", 10, 10)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

    if _IsPressed("4D") Then
    While _IsPressed("4D")
    Sleep(5)
    WEnd
    FileWrite($text, "M3HM3T")
    EndIf
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von anno2008 (23. Juni 2008 um 14:22)

  • Zum Teil,...
    die 2. while schleife wartet solange bis die Taste wieder losgelassen wird. D.h. solange die Taste runtergedrückt wird passiert noch gar ix, und erst wenn sie losgelassen wurde, wird der Text in das TExtdokument geschrieben. Vorher war es so, dass sobald es runtergedrückt wurde mehrmals erkannt wurde, dass m gedrückt ist.

    Der andere Fehler ist halt, wie du schon erkannt hast, dass die _Isperessed funtkion nicht von GUIGetMsg() zurückgegeben wird, und dass das halt dann nicht in die selbe Switch...Case...EndSwitch funktion reinkann.