Traymenu seit dem läuft der script nichtmehr ?

  • Hallo Liebe Gemeinde

    ich habe mir ein programm geschrieben das mir alle 5 minuten ein anderes wallpaper aufs desktop macht und wollte da noch ein traymenu mit rein bauen, seit dieses mit drinnen ist wird mein script erst ausgeführt wenn ich im traymenu auf beenden gehe und der script lässt sich dann auch nicht mehr beenden. Könnte da evtl. mal jemand drüberschauen ich finde den fehler nicht...


    MFG Eistee


    Spoiler anzeigen
    [autoit]

    Global Const $SPIF_SENDWININICHANGE = 0x2
    Global Const $SPIF_UPDATEINIFILE = 0x1
    Global Const $SPI_SETDESKWALLPAPER = 20
    Global $bild1 = "C:\BS\PICCHANGE\1\bild.bmp"
    Global $bild2 = "C:\BS\PICCHANGE\2\bild.bmp"
    Global $bild3 = "C:\BS\PICCHANGE\3\bild.bmp"
    Global $bild4 = "C:\BS\PICCHANGE\4\bild.bmp"
    Global $bild5 = "C:\BS\PICCHANGE\5\bild.bmp"
    Global $bild6 = "C:\BS\PICCHANGE\6\bild.bmp"
    Global $bild7 = "C:\BS\PICCHANGE\7\bild.bmp"
    Global $bild8 = "C:\BS\PICCHANGE\8\bild.bmp"
    Global $bild9 = "C:\BS\PICCHANGE\9\bild.bmp"
    Global $bild10 = "C:\BS\PICCHANGE\10\bild.bmp"
    #Include <Constants.au3>
    $size = FileGetSize("C:\BS\PICCHANGE\1\bild.bmp")
    If $size = 0 then _Install ()

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

    Func _Install ()
    DirCreate("C:\BS\PICCHANGE\1")
    DirCreate("C:\BS\PICCHANGE\2")
    DirCreate("C:\BS\PICCHANGE\3")
    DirCreate("C:\BS\PICCHANGE\4")
    DirCreate("C:\BS\PICCHANGE\5")
    DirCreate("C:\BS\PICCHANGE\6")
    DirCreate("C:\BS\PICCHANGE\7")
    DirCreate("C:\BS\PICCHANGE\8")
    DirCreate("C:\BS\PICCHANGE\9")
    DirCreate("C:\BS\PICCHANGE\10")
    FileInstall("1.bmp", "C:\BS\PICCHANGE\1\bild.bmp")
    FileInstall("2.bmp", "C:\BS\PICCHANGE\2\bild.bmp")
    FileInstall("3.bmp", "C:\BS\PICCHANGE\3\bild.bmp")
    FileInstall("4.bmp", "C:\BS\PICCHANGE\4\bild.bmp")
    FileInstall("5.bmp", "C:\BS\PICCHANGE\5\bild.bmp")
    FileInstall("6.bmp", "C:\BS\PICCHANGE\6\bild.bmp")
    FileInstall("7.bmp", "C:\BS\PICCHANGE\7\bild.bmp")
    FileInstall("8.bmp", "C:\BS\PICCHANGE\8\bild.bmp")
    FileInstall("9.bmp", "C:\BS\PICCHANGE\9\bild.bmp")
    FileInstall("10.bmp", "C:\BS\PICCHANGE\10\bild.bmp")
    EndFunc

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

    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Script pausieren/beenden) werden nicht angezeigt.

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

    $E = TrayCreateMenu("Einstellungen")
    $I = TrayCreateItem("Intervall", $E)
    $B = TrayCreateItem("Bilder Tauschen", $E)
    $AB = TrayCreateItem("About")
    $EX = TrayCreateItem("Beenden")

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

    TraySetState()

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = 0
    ContinueLoop
    _1 ()
    Case $msg = $AB
    Msgbox(64,"Über:","AutoIt3-Tray-Beispiel")
    Case $msg = $EX
    ExitLoop
    Exit
    EndSelect
    WEnd

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

    _1 ()

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

    Func _1 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild1, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _2()
    EndFunc

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

    Func _2 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild2, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _3()
    EndFunc

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

    Func _3 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild3, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _4()
    EndFunc

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

    Func _4 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild4, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _5()
    EndFunc

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

    Func _5 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild5, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _6()
    EndFunc

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

    Func _6 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild6, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _7()
    EndFunc

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

    Func _7 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild7, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _8()
    EndFunc

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

    Func _8 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild8, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _9()
    EndFunc

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

    Func _9 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild9, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _10()
    EndFunc

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

    Func _10 ()
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, "uint", 0, "str", $bild10, "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    Sleep(300000)
    _1()
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Hi,
    ist jetzt nicht getestet - aber ich hab dein Skript erst mal gewaltig gekürzt. Den Aufruf zum Wallpaper wechseln habe ich an AdlibEnable vergeben ;)

    Spoiler anzeigen
    [autoit]

    Global Const $SPIF_SENDWININICHANGE = 0x2
    Global Const $SPIF_UPDATEINIFILE = 0x1
    Global Const $SPI_SETDESKWALLPAPER = 20
    Global $arBild[10]
    For $i = 0 To 9
    $arBild[$i] = "C:\BS\PICCHANGE\" & $i+1 & "\bild.bmp"
    Next
    Global $pos = 0

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

    #Include <Constants.au3>
    $size = FileGetSize("C:\BS\PICCHANGE\1\" & $arBild[0])
    If $size = 0 then _Install ()

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

    Func _Install ()
    For $i = 1 To 10
    DirCreate("C:\BS\PICCHANGE\" & $i)
    FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
    Next
    EndFunc

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

    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Script pausieren/beenden) werden nicht angezeigt.

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

    $E = TrayCreateMenu("Einstellungen")
    $I = TrayCreateItem("Intervall", $E)
    $B = TrayCreateItem("Bilder Tauschen", $E)
    $AB = TrayCreateItem("About")
    $EX = TrayCreateItem("Beenden")

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

    TraySetState()
    AdlibEnable('_chgWallpaper', 300000)

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

    While 1
    $msg = TrayGetMsg()
    Switch $msg
    Case $AB
    Msgbox(64,"Über:","AutoIt3-Tray-Beispiel")
    Case $EX
    Exit
    EndSwitch
    WEnd

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

    Func _chgWallpaper()
    If $pos = 10 Then $pos = 0
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, _
    "uint", 0, "str", $arBild[$pos], "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    $pos += 1
    EndFunc

    [/autoit]

    Edit: Noch etwas gekürzt ;)

  • Vielen Dank BugFix

    habe nur ein Problem und zwar wo sage ich dem script welche bilder er installieren soll ?

    ok habe es jetzt getestet

    1. er erstellt zwar die Ordner aber er installiert die bilder nicht
    2. wenn ich bei _install den code von dir durch meinen ersetze installiert er die bilder
    3. er wechselt den hintergrund nicht

    kein plan vielleicht übersehe ich irgendwas ? HIer mal der script mit meiner fileinstall anpassung

    Spoiler anzeigen
    [autoit]

    Global Const $SPIF_SENDWININICHANGE = 0x2
    Global Const $SPIF_UPDATEINIFILE = 0x1
    Global Const $SPI_SETDESKWALLPAPER = 20
    Global $arBild[10] = [ _
    "C:\BS\PICCHANGE\1\bild.bmp", _
    "C:\BS\PICCHANGE\2\bild.bmp", _
    "C:\BS\PICCHANGE\3\bild.bmp", _
    "C:\BS\PICCHANGE\4\bild.bmp", _
    "C:\BS\PICCHANGE\5\bild.bmp", _
    "C:\BS\PICCHANGE\6\bild.bmp", _
    "C:\BS\PICCHANGE\7\bild.bmp", _
    "C:\BS\PICCHANGE\8\bild.bmp", _
    "C:\BS\PICCHANGE\9\bild.bmp", _
    "C:\BS\PICCHANGE\10\bild.bmp"]
    Global $pos = 0

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

    #Include <Constants.au3>
    $size = FileGetSize("C:\BS\PICCHANGE\1\" & $arBild[0])
    If $size = 0 then _Install ()

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

    Func _Install ()
    For $i = 1 To 10
    DirCreate("C:\BS\PICCHANGE\" & $i)
    FileInstall("1.bmp", "C:\BS\PICCHANGE\1\bild.bmp")
    FileInstall("2.bmp", "C:\BS\PICCHANGE\2\bild.bmp")
    FileInstall("3.bmp", "C:\BS\PICCHANGE\3\bild.bmp")
    FileInstall("4.bmp", "C:\BS\PICCHANGE\4\bild.bmp")
    FileInstall("5.bmp", "C:\BS\PICCHANGE\5\bild.bmp")
    FileInstall("6.bmp", "C:\BS\PICCHANGE\6\bild.bmp")
    FileInstall("7.bmp", "C:\BS\PICCHANGE\7\bild.bmp")
    FileInstall("8.bmp", "C:\BS\PICCHANGE\8\bild.bmp")
    FileInstall("9.bmp", "C:\BS\PICCHANGE\9\bild.bmp")
    FileInstall("10.bmp", "C:\BS\PICCHANGE\10\bild.bmp")
    Next
    EndFunc

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

    Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Script pausieren/beenden) werden nicht angezeigt.

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

    $E = TrayCreateMenu("Einstellungen")
    $In = TrayCreateItem("Intervall", $E)
    $B = TrayCreateItem("Bilder Tauschen", $E)
    $AB = TrayCreateItem("About")
    $EX = TrayCreateItem("Beenden")

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

    TraySetState()
    AdlibEnable('_chgWallpaper', 300000)

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

    While 1
    $msg = TrayGetMsg()
    Switch $msg
    Case $AB
    Msgbox(64,"Über:","AutoIt3-Tray-Beispiel")
    Case $EX
    Exit
    EndSwitch
    WEnd

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

    Func _chgWallpaper()
    If $pos = 10 Then $pos = 0
    DllCall("user32.dll", "int", "SystemParametersInfo", "uint", $SPI_SETDESKWALLPAPER, _
    "uint", 0, "str", $arBild[$pos], "uint", BitOR($SPIF_SENDWININICHANGE,$SPIF_UPDATEINIFILE))
    $pos += 1
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Ah, da hatte ich mich vertan :rolleyes:
    FileInstall braucht ja die Quelle als reinen String. Das hier:

    [autoit]

    Func _Install ()
    For $i = 1 To 10
    DirCreate("C:\BS\PICCHANGE\" & $i)
    FileInstall($i & ".bmp", "C:\BS\PICCHANGE\1\" & $arBild[$i-1] )
    Next
    EndFunc

    [/autoit]

    geht also nicht (leider).
    DirCreate kannst du in der Schleife laufen lassen, aber FileInstall mußt du dann doch für jede Datei einen Befehl schreiben.