Funktion (Zeitgesteuerte Schleife LINKSKLICK) Starten und Stoppen mit einem Knopf

  • Hallo nochmal :whistling:

    ich würde gerne meine Funktion auf Knopf1 beenden, wenn Knopf1 abermals gedrückt wird.

    Das Starten klappt ganz gut, aber das beenden nicht :(

    Muss die Abbruchbedingung in die Caseanweisung mit rein? Oder in meine Funktion? Oder geht das ganz anders?

    Sorry für meine Newbie-Fragen :)

    Spoiler anzeigen
    [autoit]


    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop

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

    Case $button1
    Do
    _meinefunktion()
    Until ???
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd

    [/autoit]

    Wobei $Button1 wie folgt aussieht
    $button1 = GUICtrlCreateButton(blah blah)
    GUICtrlSetImage(blah blah)

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

    2 Mal editiert, zuletzt von ctec (24. Juli 2008 um 15:28)

  • Hi ctec,

    kannst du für mich noch etwas genauer werden?
    Also die Funktion _meinefunktion() soll auf Button druck gestartet werden,
    und auf nochmaliges drücken gestoppt werden.
    Soll dein Skript in der Zeit noch was andere ausführen können oder soll es einfach nur pausieren?
    Willst du wenn die Funktion gestoppt ist und wieder drückst die Funktion komplett neu starten oder dort weiter machen wo du aufgehört hast?
    Wenn du grob schreibst was du damit machen willst, kann man sich des ein bisschen besser vorstellen.

    Tschau
    Ben

  • Hallo,
    entschuldigung wenn ich mich ein bischen "ungeschickt" ausgedrückt habe.

    Auf den Buttons liegen verschiedene "Funktionen" z.B. MSTSC mit bestimmter IP ausführen - das klappt alles wunderbar.

    Für den Start/Stopp Knopf brauche eine einfache Mausklickfunktion z.B.

    [autoit]

    Func _klick()
    sleep (20000)
    MouseClick("left")
    EndFunc

    [/autoit]

    Diese Funktion möchte ich über den Button Starten/Stoppen können :) ich denke eigentlich ganz einfach :D nur alles was ich bislang an do / while oder if else Schleifen probiert habe, ging nicht :cursing:

    Vielen Dank im Voraus

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Probiers mal hiermit:

    Spoiler anzeigen
    [autoit]


    $click = 0

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

    If $click = 0 Then
    _funktion("start")
    Else
    _funktion("stop")
    EndIf

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

    Func _funktion($s_option)

    If $s_option = "start" Then

    $click = 1

    EndIf

    If $s_option = "stop" Then

    $click = 0

    EndIf
    EndFunc

    [/autoit]
  • Hallo,

    soweit, so gut. Aber die Funktion wird nur 1 mal ausgeführt. Sie muss aber solange ausgeführt werden, bis der Knopf wieder gedrückt wird.

    Ich kriege nach wie vor keine Abbruchbedingung in meine Schleife :( in der Hilfe finde ich leider auch nichts dazu...

    Weitere Vorschläge?
    DANKE

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Probiers mal so.

    Spoiler anzeigen
    [autoit]


    $click = 0

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button1
    If $click = 0 Then
    _funktion("start")
    Else
    _funktion("stop")
    EndIf
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd

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

    Func _funktion($s_option)

    If $s_option = "start" Then

    $click = 1

    EndIf

    If $s_option = "stop" Then

    $click = 0

    EndIf
    EndFunc

    [/autoit]
  • auch so funktioniert es nur 1 mal :(

    oder setze ich das:
    sleep (2000)
    MouseClick("left")

    an die falsche Stelle? kann da auch keine wirkliche Schleife erkennen !?

    Der Linksklick soll solange ausgeführt werden, bis der Knopf nochmal gedrückt wird.
    DANKE


    PS: ich teste mal oben eine Do....While
    PPS: klappt einfach nicht :(

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • der Link geht nur hier in der Thread :|

    wolltest Du ein Script anhängen?

    der Code aus den Postings vorher geht nicht :(

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Hier nochmal das Skript

    Spoiler anzeigen
    [autoit]


    $click = 0

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button1
    If $click = 0 Then
    _funktion("start")
    Else
    _funktion("stop")
    EndIf
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd

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

    Func _funktion($s_option)

    If $s_option = "start" Then

    $click = 1

    EndIf

    If $s_option = "stop" Then

    $click = 0

    EndIf
    EndFunc

    [/autoit]
  • am Quelltext hat sich nichts geändert :(

    Funktioniert so nicht - Die Funktion wird 1 mal aufgeführt (also wenn ich den Linksklick mit reinnehme).

    Ich brauche quasi eine Endlosschleife mit "externer" Abbruchbedingung - oder kA wie ich das ausdrücken / coden soll

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Bitte:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    _Main()
    Func _Main()
    Local $button1, $buttonclose, $click

    GUICreate("Klick", 240, 80)
    $button1 = GUICtrlCreateButton("1", 0, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 15)
    $buttonclose = GUICtrlCreateButton("close", 200, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 28)
    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button1

    If $click = 0 Then
    _funktion("start")
    Else
    _funktion("stop")
    EndIf
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd
    GUIDelete()
    EndFunc ;==>_Main

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

    Func _funktion($s_option)

    If $s_option = "start" Then
    sleep (2000)
    MouseClick("left")
    $click = 1

    EndIf

    If $s_option = "stop" Then

    $click = 0

    EndIf
    EndFunc

    [/autoit]
    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • Hab das Skript jetzt mal angepasst. jetzt müsste es funktionieren. Du brauchst MouseClick nicht.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

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

    _Main()

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

    Func _Main()

    Local $button1, $buttonclose, $click

    GUICreate("Klick", 240, 80)
    $button1 = GUICtrlCreateButton("1", 0, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 15)
    $buttonclose = GUICtrlCreateButton("close", 200, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 28)
    GUISetState()

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button1
    If $click = 0 Then
    _funktion("start")
    Else
    _funktion("stop")
    EndIf
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd

    GUIDelete()

    EndFunc ;==>_Main

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

    Func _funktion($s_option)

    If $s_option = "start" Then

    $click = 1

    EndIf

    If $s_option = "stop" Then

    $click = 0

    EndIf

    EndFunc

    [/autoit]
  • Jetzt bin ich verwirrt!

    Bei mir tut sich nichts - ich will doch das z.B. alle x Sekunden ein Mouseklick links gesendet wird

    Das Script tut so garnichts ?(

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • EDIT:

    Ich will, dass per Knopfdruck ein Linksklick mit der Maus solange ausgeführt wird, bis der Knopf wieder gedrückt wird.

    DANKE :!:

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

    Einmal editiert, zuletzt von ctec (24. Juli 2008 um 14:44)

  • So, so nichts selber machen, aber alles haben wollen :P

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

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

    _Main()

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

    Func _Main()

    Local $button1, $buttonclose, $ButtonClickedDownState

    GUICreate("Klick", 240, 80)
    $button1 = GUICtrlCreateButton("1", 0, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 15)
    $buttonclose = GUICtrlCreateButton("close", 200, 0, 40, 40, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 28)
    GUISetState()

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $button1
    If $ButtonClickedDownState = 1 Then
    AdlibDisable()
    $ButtonClickedDownState = 0
    Else
    AdlibEnable("_ClickFunc",1000)
    $ButtonClickedDownState = 1
    EndIf
    Case $buttonclose
    ExitLoop
    Case Else
    EndSwitch
    WEnd

    GUIDelete()

    EndFunc ;==>_Main
    Func _ClickFunc()
    MsgBox(0,"","Wo soll wohl der Mausklick hin? :D")
    EndFunc

    [/autoit]
  • Ich danke Dir (Euch...) vielmals :love:

    Ich kann im Bereich Programmierung leider nicht wirklich helfen (arbeite mich so gut es geht ein)...

    So sind sie die Administratoren :rock:

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"