sleep local

  • da ja zu jeder frage immer 1000de dazukommen
    stell ich mir gerade folgene frage mir ist ja aufgefallen wenn ich in einer while sleep(time) einfüge der gesamte script solange pausierd wird
    so hatte ich gedacht es vieleicht mit local aber da ging es auch nicht brachte nur noch mehr probleme mit sich

    [autoit]


    #include <Sound.au3>
    WinWaitActive ("Unbenannt - Editor")
    Local $sleepy = Sleep (10000)
    While 1
    _testfunc()
    _testfunc2()
    Sleep(100)
    WEnd
    Func _testfunc2()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("Test men")
    EndIf

    Func _testfunc()
    While Hex(PixelGetColor(242,97),6) = "9CD2DF"
    $sound = _SoundOpen("bla.wav")
    _SoundPlay($sound)
    While _SoundStatus($sound) = "playing"
    sleep($sleepy)
    WEnd
    WEnd
    EndFunc

    [/autoit]


    also oben die variable soll weiter ausgeführt werden auch wenn ein sleep von 10sec beim sound ist
    wie könnte man das umsetzen?

  • Seit wann kommt in eine Variable eine ganze Funktion ???

    Spoiler anzeigen
    [autoit]

    #include <Sound.au3>
    WinWaitActive ("Unbenannt - Editor")
    Local $sleepy = 10000 ;So sollte es gehen.
    While 1
    _testfunc()
    _testfunc2()
    Sleep(100)
    WEnd
    Func _testfunc2()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("Test men")
    EndIf

    Func _testfunc()
    While Hex(PixelGetColor(242,97),6) = "9CD2DF"
    $sound = _SoundOpen("bla.wav")
    _SoundPlay($sound)
    While _SoundStatus($sound) = "playing"
    sleep($sleepy)
    WEnd
    WEnd
    EndFunc

    [/autoit]


    Oder das ganze ohne Local:

    Spoiler anzeigen
    [autoit]

    #include <Sound.au3>
    WinWaitActive ("Unbenannt - Editor")
    $sleepy = 10000 ;So mach ich es immer und es klappt auch immer.
    While 1
    _testfunc()
    _testfunc2()
    Sleep(100)
    WEnd
    Func _testfunc2()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("Test men")
    EndIf

    Func _testfunc()
    While Hex(PixelGetColor(242,97),6) = "9CD2DF"
    $sound = _SoundOpen("bla.wav")
    _SoundPlay($sound)
    While _SoundStatus($sound) = "playing"
    sleep($sleepy)
    WEnd
    WEnd
    EndFunc

    [/autoit]
    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • Local $sleepy = Sleep (10000)
    Sleep($sleepy) <- also 10secunden siehe oben bei local
    ich weis das das falsch ist würde ja sonst nicht frage :D
    also der sound soll jetzt als beispiel nach 1x abspieln 10sec warten bevor er wieder darf
    oder machen wir es anders...

    [autoit]


    #include <Sound.au3>
    WinWaitActive ("Unbenannt - Editor")
    Local $sleepy = Sleep (10000)
    While 1
    _testfunc1()
    _testfunc2()
    Sleep(100)
    WEnd
    ; die erste func
    Func _testfunc1()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("Ich bin nicht da")
    Sleep(10000) ; er soll jetzt 10sekunden lang nichts machen
    EndIf
    EndFunc
    ;die zweite func
    Func _testfunc2()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("doch bist du")
    Sleep(5000) ; hier soll es aber weiterlaufen auch wenn oben 10sekunden sleep vorhanden ist aber trozdem seine 5sekunden berücksichtigen
    EndIf
    EndFunc

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

    ;also 2 sleeps die sich aber nicht untereinander behindert

    [/autoit]

    €dit: RechtWinkel habe es mal ausprobiert aber er sleept denn ganzen script er soll es nur local in der function anwenden und denn rest weiterlaufen lassen

    Einmal editiert, zuletzt von Mc.Neal (28. Juli 2009 um 16:00)

  • Zitat

    €dit: RechtWinkel habe es mal ausprobiert aber er sleept denn ganzen script er soll es nur local in der function anwenden und denn rest weiterlaufen lassen

    Sleep hält das Script an, denn AutoIt ist nicht dazu in der Lage 2 Funktionen gleichzeitig in einem Script auszuführen.

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • Mehrere Sachen gleichzeitig zu machen ist mit Autoit eigentlich nicht möglich.
    Mit AdlibEnable lässt sich vielleicht aber etwas vergleichbares erreichen? Sorry hab das Problem noch nicht verstanden, das Skript wird einfach Zeile für Zeile ausgeführt.

    Spoiler anzeigen
    [autoit]


    #include <Sound.au3>
    WinWaitActive ("Unbenannt - Editor")
    Local $sleepy = Sleep (10000) ;hier schläft das skript
    While 1 ;hier gehts in eine endlosschleife
    _testfunc1() ;funktion1 wird aufgerufen
    _testfunc2() ;nachdem funktion1 beendet ist wird funktion2 ausgerufen
    Sleep(100)
    WEnd
    ; die erste func
    Func _testfunc1()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("Ich bin nicht da")
    Sleep(10000) ; jetzt schläft es wieder
    EndIf
    EndFunc ;erst jetzt geht es wieder in die while wend schleife ud somit in funktion2

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

    Func _testfunc2()
    $1=1
    $2=1
    $3=1
    $test=1
    $test2=1
    $test3=0
    If $1 =$test AND ($2 = $test2 or $3 = $test3) then
    Send ("doch bist du")
    Sleep(5000) ; hier soll es aber weiterlaufen auch wenn oben 10sekunden sleep vorhanden ist
    EndIf
    EndFunc ;zurück zur while wend schleife

    [/autoit]
  • rechter winkel ebend nicht
    soll ich dir ein video machen?
    hab es jetzt mal mit 1sec und 5sec versucht func1 soll jede sekunde ausgeführt werden und func2 alle 5 aber und hier kommt jetzt das problem
    nach denn func2 seine sache gemacht hat und in sleep übergeht "wartet" er 5sekunden bis er wieder func1 macht...
    und das möchte ich gerade nicht

    €dit: nuts also geht das nicht ok ablib hab ich auch versucht hatte auch auch nichts gebracht
    brauch man wohl eine UDF für der sowas verarbeiten kann :D

  • Doch. genau das macht Sleep ..

    Aber für das was du erzielen möchtest solltest du dich mal mit

    [autoit]

    TimerInit ;<= Klick mich

    [/autoit]


    ausseinandersetzen.

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • TimeInit() ist nicht sehr aufschlussreich in der help :(
    kann man dazu vieleicht ein beispiel geben?

  • Tut mir Leid, mein Fehler ... TimerInit ist für andere Dinge sinnvoller ..
    Aber es ist soweit ich weiß unmöglich in einem Script verschiedene Funktion zur selben Zeit auszuführen

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • Er hat vor, das 2 Funktionen gleichzeitig und unabhängig von einander ausgeführt werden

    Die Funktion

    [autoit]

    AdlibEnable

    [/autoit]

    kannte ich nicht.

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]
  • Hi,
    das was du "Local Sleep" nennst gibts nicht :).

    Sleep pausiert das ganze Script, immer!
    Mit der AutoIt Beta könntest du AdlibRegister ( "function" [, time] ) benutzen:

    kann leider gerade nicht testen
    [autoit]

    ;~ #include <Sound.au3>

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

    WinWaitActive("Unbenannt - Editor")

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

    ;~ Local $sleepy = Sleep (10000) ; <-- das is quatsch ^^. Sleep hat keinen Rückgabewert. Die Variable $sleepy enthält also nix ...

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

    AdlibRegister("_testfunc1", 10000)
    AdlibRegister("_testfunc2", 5000)

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

    ; die erste func
    Func _testfunc1()
    $1 = 1
    $2 = 1
    $3 = 1
    $test = 1
    $test2 = 1
    $test3 = 0
    If $1 = $test And ($2 = $test2 Or $3 = $test3) Then
    Send("Ich bin nicht da")
    EndIf
    EndFunc ;==>_testfunc1

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

    Func _testfunc2()
    $1 = 1
    $2 = 1
    $3 = 1
    $test = 1
    $test2 = 1
    $test3 = 0
    If $1 = $test And ($2 = $test2 Or $3 = $test3) Then
    Send("doch bist du")
    EndIf
    EndFunc ;==>_testfunc2

    [/autoit]

    anno2008

  • gibt dazu ein fehler ERROR: AdlibRegister(): undefined function.
    AdlibRegister("_testfunc1", 10000)

    denke mir aber langsam vieleicht sollte ich mich doch lieber mit cpp auseinandersetzen ^^

  • Mit der AutoIt Beta könntest du AdlibRegister ( "function" [, time] ) benutzen:

    Irgendwie ist das schon sau blöd sich selber zu Zitieren ^^.
    Wer lesen kann ...

    Und ich kann dir schon jetzt sagen, viel Spass bei c++ :D. Wenn du nicht mal AutoIt einigermaßen hinbekommst ...

    Probier mal das, ich habs wieder nicht getestet...

    Spoiler anzeigen
    [autoit]

    WinWaitActive("Unbenannt - Editor")

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

    AdlibEnable("_testfunc1", 5000)

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

    Func _testfunc1()
    $1 = 1
    $2 = 1
    $3 = 1
    $test = 1
    $test2 = 1
    $test3 = 0
    If $1 = $test And ($2 = $test2 Or $3 = $test3) Then
    Send("Ich bin nicht da")
    EndIf

    Sleep(5000)

    _testfunc2()
    EndFunc ;==>_testfunc1

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

    Func _testfunc2()
    $1 = 1
    $2 = 1
    $3 = 1
    $test = 1
    $test2 = 1
    $test3 = 0
    If $1 = $test And ($2 = $test2 Or $3 = $test3) Then
    Send("doch bist du")
    EndIf
    EndFunc ;==>_testfunc2

    [/autoit]
  • nene ich vorhin extra die beta draufgehaun und es geht nicht ^^

    • Offizieller Beitrag

    nene ich vorhin extra die beta draufgehaun und es geht nicht ^^

    Hast du es auch unter der Beta ausgeführt ? Die Installation alleine nutzt nichts .

  • Danke Raupi, ich hab auch die Beta und es wird denk ichmal daran liegen ... Nur wie fürht man die Beta aus ?(

    [autoit]

    If ProcessExists("Sig.exe") Then
    ConsoleWrite("@@ mfg")
    Else
    ConsoleWrite("!! -no sig-")
    EndIf

    [/autoit]