Eine Bestimmte zeit eine MsgBox auf rufen mit hilfe einer Variablen

  • Das hier müßte ich

    Spoiler anzeigen
    [autoit]

    $var = 10 ; 000
    adlibenable("_msgbox", 1000 + $var)

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

    While 1
    WEnd

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

    func _msgbox()
    MsgBox(4096, "Test3", "Diese MsgBox ist 3te wo bei die an 2 stehle steht") ; nur diese MsgBox soll in 44 sekunden (sleep 44000) angezeigt werden.
    adlibdisable()
    Exit
    endfunc

    [/autoit]

    ganz am ende setzen damit es funkz dann stimmt aber die zeit nicht mehr da der skript immer von oben nach unten durch geht und wenn ich den Internet Explorer über dem Skript starten tue dann kommt erst der Befehl die seite auf rufen dann Benutzer und Passwort eingeben danach wartet er bis die seite aktiv ist und so weiter. und viele andere Befehle folgen und wenn ich diesen befehl

    Spoiler anzeigen
    [autoit]

    $var = 10 ; 000
    adlibenable("_msgbox", 1000 + $var)

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

    While 1
    WEnd

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

    func _msgbox()
    MsgBox(4096, "Test3", "Diese MsgBox ist 3te wo bei die an 2 stehle steht") ; nur diese MsgBox soll in 44 sekunden (sleep 44000) angezeigt werden.
    adlibdisable()
    Exit
    endfunc

    [/autoit]

    am ende setze und ich möchte das die meldung in 5 Stunden kommt der Sleep soll aktiv sein wenn die endsprechene InternetSeite da ist ( WinWaitActiveWinWaitActive("wordsan - scheck dein Auto - Windows Internet Explorer")...)und nicht am Ende des Skript ablauf sonst müßte man berechnen wann der skript ein mal durch gelaufen ist bis zum punkt (WinWaitActiveWinWaitActive("wordsan - scheck dein Auto - Windows Internet Explorer")...) um die zeit zu kürzen


    und hier der ganze Skript der noch nicht richtig fertig ist

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    $var = 18000000; 000
    adlibenable("_msgbox", 1000 + $var)

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

    Local $iCounter
    Global $g_bAutoRefresh = FALSE

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

    Global $sUsername = 'xxxxxxxxxxxxxx'
    Global $sPassword = 'xxxxxxxxxx'

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

    Global $url = "http://www.wordsan.de/"

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

    HotKeySet("^q", "Terminate")
    HotKeySet ("{F9}", "AutoRefresh")
    ;~ HotKeySet ("{F10}", "AutoRefresh")

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

    Global $oIE = _IECreate($url)
    $hWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState($hWND, "", @SW_MAXIMIZE)

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

    $oform = _IEFormGetCollection($oIE, 0)
    $oname = _IEFormElementGetObjByName($oform , "login[u]")
    $opasswd = _IEFormElementGetObjByName($oform , "login[p]")
    $obutton = _IEFormElementGetObjByName($oform , "Submit")
    $setname = _IEFormElementSetValue($oname, $sUsername)
    $setpasswd = _IEFormElementSetValue($opasswd, $sPassword)
    _IEAction($obutton, "click")

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

    WinWaitActive("wordsan - scheck dein Auto - Windows Internet Explorer")

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

    ; ab hier den Befehl einbauen damit der Sleep hier anfängt zu zählen ohne das die anderen beeinflusst werden

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

    ; der Sleep mit einer Variable zu die msgbox die kann unten stehen bloß ab hier soll der sleep nur für die Speziale Msgbox nach 5 Stunden auf rufen

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

    ; die anderen darunter sollen aktiv bleiben ohne den Spezialen Sleep Funktion

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

    AutoRefresh ( )

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

    While (WinExists ($hWND))
    Sleep(50)
    Wend

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

    Func AutoRefresh ( )

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

    Local $iCount
    Local $iSleep = 250

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

    If (not $g_bAutoRefresh) Then
    $g_bAutoRefresh = TRUE
    If $iCounter = 1 Then SplashTextOn("Aktualisierung", "Aktualierung von 5 min wieder Aktiv", 300, 60, -1, -1, 0) ; nur hier die MsgBox soll beim 2 mal aktiv sein
    Sleep(4000)
    SplashOff()
    $iCounter = 1
    Else
    $g_bAutoRefresh = FALSE
    SplashTextOn("Aktualisieren", "Aktualisierung von 5 min wurde gestoppt", 400, 60, -1, -1, 0)
    Sleep(4000)
    SplashOff()
    EndIf

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

    ConsoleWrite ("--- g_bAutoRefresh = "&$g_bAutoRefresh & @crlf)

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

    While ($g_bAutoRefresh)

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

    If ($iCount == 300000) Then

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

    $iCount = 0
    _IEAction($oIE, "refresh")
    EndIf

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

    $iCount += $iSleep
    Sleep($iSleep) ; 0,25 Sekunden
    Wend

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

    EndFunc

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

    Func Terminate ( )
    Exit 0
    EndFunc

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

    und wie gesagt die func _msgbox funktion soll keins von den anderen skript befehle beeinflussen lediglich nur in 5 Stunden die func _msgbox auf Rufen und sonst keine änderungen der anderen skript befehle der Skript ist ein endlosschleife

    Gruß

    Baron1977

    P.s. ich weiß wenn man den sleep die millisekunden kürzer macht um so schneller läuft der ab dann kann ich das auch dann weck lassen geht noch schneller :rofl: da ich das aber nicht so haben will ich kann ja auch die Internet seite starten und dann ein wecker stellen für 5 Stunden das ich weiß ahja ich habe meine 5 Stunden auf der seite geschaft :rofl:

  • es gibt doch bestimmt auch ein befehl wenn man 5 minuten nicht im forum aktiv ist das die meldung kommt

    [autoit]

    MsgBox (4096, "Ablauf", "Sie wahren länger als 5 minten nicht mehr Aktiv Sie würden Ausgeloggt")

    [/autoit]

    oder Programm ???????????

    also müßte es doch für meinen skript auch eine Lösung geben oder ?

  • dann muß ich wohl ein zweiten Skript bauen wo das drin ist

    [autoit]

    Sleep(18000000)
    Msgbox(4096, "Geschaft", "Du hast die 5 Stunden auf diser Seite gemeistert")

    [/autoit]

    mach das ganze als exe und dann baue ich sie unter der WinWaitactive Funktion ein

    so ungefähr

    Spoiler anzeigen
    [autoit]

    WinWaitActive("wordsan - scheck dein Auto - Windows Internet Explorer")
    run (5Stunden.exe)

    [/autoit]

    bloß dann habe ich 2 skripte die laufen schade das es keine andere möglichkeit gibt aber der skript würde dann gehen und nicht das andere skript ab bremsen.

    wenn ich es so mache dan geht es doch und ich denke es würde auch anders gehen .???

    Gruß Baron1977

  • also wenn ich vom zweiten skript erzähle und das mal genau anschaut und nach denkt dann merkt man das der skript eigend ständig ist und den anderen Skript nicht beeinflussen tut .

    schöner wehrs gewesen wenn unter der WinWaitActiv funktion der sleep der gekennt zeichnet ist nur für die speziale _msgbox hier nochmal der skript mit genau die stelle die ich geschildert habe was ich meine

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    $var = 18000000; 000
    adlibenable("_msgbox", 1000 + $var)

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

    Local $iCounter
    Global $g_bAutoRefresh = FALSE

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

    Global $sUsername = 'xxxxxxxxxxxxxx'
    Global $sPassword = 'xxxxxxxxxx'

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

    Global $url = "http://www.wordsan.de/"

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

    HotKeySet("^q", "Terminate")
    HotKeySet ("{F9}", "AutoRefresh")
    ;~ HotKeySet ("{F10}", "AutoRefresh")

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

    Global $oIE = _IECreate($url)
    $hWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState($hWND, "", @SW_MAXIMIZE)

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

    $oform = _IEFormGetCollection($oIE, 0)
    $oname = _IEFormElementGetObjByName($oform , "login[u]")
    $opasswd = _IEFormElementGetObjByName($oform , "login[p]")
    $obutton = _IEFormElementGetObjByName($oform , "Submit")
    $setname = _IEFormElementSetValue($oname, $sUsername)
    $setpasswd = _IEFormElementSetValue($opasswd, $sPassword)
    _IEAction($obutton, "click")

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

    WinWaitActive("wordsan - scheck dein Auto - Windows Internet Explorer")

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

    ; AB HIER SOLL ER DENN SLEEP STARTEN FÜR DIE _MSGBOX DIE IN 5 STUNDEN ANGEZEIGT WERDEN SOLL DER SLEEP SOLL NICHT DIE ZEIT GEKÜRZT UND AUCH NICHT DIE
    ;ANDEREN BEFEHLE BEEINFLUSST WERDEN. DER SLEEP MUß HIER GESTARTET WERDEN WEIL HIER DIE SEITE AKTIV IST. UND DIE MSGBOX SOLL NACH 5 STUNDEN MIR SAGEN DAS DIE 5 STUNDEN RUM SIND.

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

    AutoRefresh ( )

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

    While (WinExists ($hWND))
    Sleep(50)
    Wend

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

    Func AutoRefresh ( )

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

    Local $iCount
    Local $iSleep = 250

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

    If (not $g_bAutoRefresh) Then
    $g_bAutoRefresh = TRUE
    If $iCounter = 1 Then SplashTextOn("Aktualisierung", "Aktualierung von 5 min wieder Aktiv", 300, 60, -1, -1, 0) ; nur hier die MsgBox soll beim 2 mal aktiv sein
    Sleep(4000)
    SplashOff()
    $iCounter = 1
    Else
    $g_bAutoRefresh = FALSE
    SplashTextOn("Aktualisieren", "Aktualisierung von 5 min wurde gestoppt", 400, 60, -1, -1, 0)
    Sleep(4000)
    SplashOff()
    EndIf

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

    ConsoleWrite ("--- g_bAutoRefresh = "&$g_bAutoRefresh & @crlf)

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

    While ($g_bAutoRefresh)

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

    If ($iCount == 300000) Then

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

    $iCount = 0
    _IEAction($oIE, "refresh")
    EndIf

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

    $iCount += $iSleep
    Sleep($iSleep) ; 0,25 Sekunden
    Wend

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

    EndFunc

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

    Func Terminate ( )
    Exit 0
    EndFunc

    [/autoit]


    MfG

    Baron1977

  • Könntest du bitte auf deine Rechtschreibung achten? Das tut weh das zu lesen !

    Übrigens heißt es "Das Skript" und nicht "Der Skript"

    Edit: Bei deinem Sleep muss man wirklich überlegen wie lange das ist. Sieht vielleicht komplizierter aus, ist aber leichter zu lesen als deins.

    [autoit]

    Sleep(1000*60*60*$AnzahlDerStunden)

    [/autoit]


    Finde ich zumindest :thumbup:

    Edit²: Du hast 4 Post's untereinander. Learn to Edit ! 8|

  • meine Rechtschreibung liegt daran wenn ich viel Schreibe und ich es schon eindeutig geschlidert habe was ich meinen tue und trotzdem andere Antworten kommen und

    das hier

    [autoit]

    Sleep(1000*60*60*$AnzahlDerStunden)

    [/autoit]

    bringt mir auch nicht weiter ich habe nicht vor Skripte zu kürzen oder des andere !

    wenn ich ein Feriges Skript habe und will nur eine MsgBox mit einbauen die aber eigendständig läuft ohne die anderen Skripte zu Blockieren und die soll auch unter der WinWAitActive sein da die Internet Seite da Aktiv ist und die MsgBox erst nach 5 Stunden (1000*60*60*5) erscheinen soll , und soll sich nicht auf dem erst auswirken.


    Gruß Baron1977

  • Deine Langen schreibweisen für ein einfaches Wort-Komplex hebe ich hier
    mal auf. Du meinst eine nicht Modale MessageBox die zudem noch eine Zeit
    angabe braucht, damit sie nicht ewig ungeklickt hängen bleibt.

    Ich vermute das MsgBox befehl das Falsche für dich ist
    mache dir doch in einer Include Datei oder im Script Selber einen Befehl
    der ein GUI Anlegt das du dann mit _Timer_SetTimer
    nach einer Zeit wieder Schließen läßt.

    Schau in der UDF Hilfe im AutoIt Ordner oder wo du die Hilfe Dateien von AU3 hast mal nach
    _Timer_SetTimer
    _Timer_KillTimer


    und tu vorher natürlich

    #include <Timers.au3> ;~UDF

    ausführen.

    Eine Desaströses aber gutes Beispiel, so ungefähr.

    #include <Timers.au3>

    Func wMSG($pMessage, $pTime)
    Local $wMAIN = GUICreate("Testos", 640, 480)
    Local $oLABEL = GUICtrlCreateLabel([usw...])
    Local $oOKBTN = GUICtrlCreateButton([usw...])
    GUISetState(@SW_SHOW, $wMAIN)
    Global $tTIMERID = _Timer_SetTimer($wMAIN, ($pTime*(60*(60*1000))), "CallFunc_CloseOwnMsg" )
    While(1)
    [usw...!!!]
    Wend
    EndFunc

    Func CallFunc_CloseOwnMsg($hWnd,$Msg,$iIDTimer,$dwTime)
    GUIDelete($wMAIN)
    _Timer_KillTimer( $tTIMERID)
    End Func

    wMSG("Dies ist ein desaströses Beispiel...", 5) ;~ AUFRUF bsw. (Ist dann nicht Modal, es geht also weiter...)
    DirectDanachFunc("ABC", "Startet unmittelbar nach :rolleyes: ")

    Alles Gute ...
    Mr.Script :thumbup:


    Ps. "Wer weiße in den Morgen schaut, der Abends sein TV Zerhaut..." :rolleyes:

    Einmal editiert, zuletzt von Mr.Script (15. September 2009 um 17:22)

  • Meine Antwort bleibt gleich: Threads

    [autoit]

    Func CreateThread($handle, $struct)
    $return = DllCall("kernel32.dll", "hwnd", "CreateThread", "ptr", 0, "dword", 0, "long", DllCallbackGetPtr($handle), "ptr", DllStructGetPtr($struct), "long", 0, "int*", 0)
    Return $return[0]
    EndFunc

    [/autoit]
  • könnte ich ein kleinen beispiel bekommen für den Befehl: _Timer_SetTimer

    da ich die udf hilfe datei zum ersten mal habe da ich vorher nur die autoit3 hilfe hatte und der befehl bestimmt das ist was ich bräuchte.

    das beispiel würde ich mir so vorstellen das drei MsgBox gibt der eine am anfang der zweite darunter mit dem _Timer_SetTimer befehl der in 3 Minuten öffnet und die letzte MsgBox darunter am Ende


    Danke schonmal im Vorraus

    Gruß Baron1977