Bildschirmschoner in Autoit erstellen?

    • Offizieller Beitrag
    [autoit]

    While 1

    While 2
    GUICtrlSetImage($pic1,"bild1.bmp")
    GUISetState(@SW_SHOW) ; um das neue bild anzuzeigen :P
    for $i = 1 to 10
    $msg = GUIGetMsg() ; das gehört hier ind die schleife :P nicht auserhalb! daher deine endlos schleife!
    If $msg == $GUI_EVENT_CLOSE Then Exit
    sleep(1000) ; damit "$GUI_EVENT_CLOSE" öfter verabreitet wird!
    next
    GUICtrlSetImage($pic1,"bild2.bmp")
    GUISetState(@SW_SHOW) ; um das neue bild anzuzeigen :P
    sleep(1000)

    WEnd

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

    WEnd

    [/autoit]

    Zwei While-Schleifen ohne Abbruchbedingungen direkt ineinanderzuschachteln macht keinen Sinn. Auch die beiden GUISetStates innerhalb der While-Schleife dürften auch überlüssig sein (habe ich aber nicht getestet). :)

    peethebee

  • Würds so machen:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstants.au3>
    ;first edition of an screen saver
    $font='Arial'
    $textcolor = 0xff0000

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

    HotKeySet("{Esc}", "_esc")

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

    GUICreate('', -1, -1, 0, 0, BitOr($WS_POPUP, $WS_MAXIMIZE))
    $pic1 = GUICtrlCreatePic('bild1.bmp', 0, 0, @DesktopWidth, @DesktopHeight)

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

    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor ( -1, $textcolor)
    GUICtrlSetFont (-1, 36, 400, 1, $font)
    GUISetState (@SW_SHOW)

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

    While 1
    GUICtrlSetImage($pic1,"bild1.bmp")
    sleep(1000)
    GUICtrlSetImage($pic1,"bild2.bmp")
    sleep(1000)
    WEnd

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

    Func _esc()
    Exit
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Vielleicht kannst Du dieses Beispiel weiter ausbauen:

    [autoit]


    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    ;first edition of an screen saver

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

    GUICreate('', -1, -1, 0, 0, BitOr($WS_POPUP, $WS_MAXIMIZE))
    GUISetOnEvent($GUI_EVENT_CLOSE, 'End')

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

    Global $pic[3] = [@WindowsDir & '\Angler.bmp', @WindowsDir & '\Fächer.bmp', @WindowsDir & '\Granit.bmp']
    Global $index = 0
    Global $hPic = GUICtrlCreatePic($pic[$index], 0, 0, @DesktopWidth, @DesktopHeight)

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

    GUISetState (@SW_SHOW)

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

    $t1 = TimerInit()
    While 1
    If TimerDiff($t1) > 10000 Then
    $index += 1
    If $index > (UBound($pic)-1) Then $index = 0
    GUICtrlSetImage($hPic, $pic[$index])
    $t1 = TimerInit()
    EndIf
    WEnd

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

    Func End()
    Exit
    EndFunc

    [/autoit]

    Das läßt auch mehrere Bilder zu, arbeitet im OnEvent-Mode und benutzt einen Timer statt Sleep, sodass man es auch mit ESC abbrechen kann.

  • Abbrechen durch MouseMove bei Oscars Skript:
    GUISetOnEvent($GUI_EVENT_MOUSEMOVE,"End")