Wallpaper im laufenden Betrieb ändern

  • Frage mich gerade, wie es nun komplett ausschaut.

    Crazy-A

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich hab das Skript ein bisschen erweitert. Aber leider funktioniert es nicht. Das Skript von Ryu_1991 hat auch nicht funktioniert.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>

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

    Global Const $SPIF_UPDATEINIFILE = 0x01
    Global Const $SPIF_SENDWININICHANGE = 0x02
    Global Const $SPI_SETSCREENSAVEACTIVE = 0x11
    Global Const $SPI_SETDESKWALLPAPER = 0x14
    Global Const $SPI_GETDESKWALLPAPER = 0x73
    Global $target = @ScriptDir & "\Wallpapers"

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

    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "REG_SZ", "0")
    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "0")

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

    $Bilder = _FileListToArray($target, "*.bmp", 1)

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

    For $x = 1 To $Bilder[0]

    $Bilder[$x] = $target & "\" & $Bilder[$x]

    Next

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

    _SetDeskWallpaper($Bilder[Random(1, $Bilder[0], 1)])

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

    Func _SetDeskWallpaper($Filename)
    DllCall("user32.dll", "long", "SystemParametersInfo", "long", $SPI_SETDESKWALLPAPER, "long", 0, "str", $Filename, "long", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDWININICHANGE))
    EndFunc ;==>_SetDeskWallpaper

    [/autoit]
  • Also das ist etwas alt aber ich habs auch ma angeschaut weil das interessant ist. ICh habs bissel hingekriegt. Nur ich wusste nicht das Windows XP jpg dateien in eine andere verzeichnis kopiert und sie zu bmp konventiert. Daher brauch man echt JPG to BMP konventrierer.. ma sehen ob ich das irgendwoher bekomme ^^

    ASO GDI ging bei mir net.. muss ich das was includen??
    EDIT: omg habs gefunden ^^

  • Also ich hab mit IrfanView JPG in BMP konvertiert und hab das Skript ausprobiert, aber leider funktioniert es nicht

  • danke der ist toll.
    Wieso geht das nicht Oo

    [autoit]


    $ext = StringTrimLeft($Bitmap, StringInStr($Bitmap, ".", -1))
    MsgBox(0,"",$ext) ; Zwischentest
    If not $ext = "bmp" then
    _GDIPlus_Startup()
    $Bild = _GDIPlus_ImageLoadFromFile("C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder\schwarz.JPG")
    _GDIPlus_ImageSaveToFile($Bild,"C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder\BILD.bmp")
    _GDIPlus_ImageDispose($Bild)
    _GDIPlus_Shutdown()
    endif

    [/autoit]


    Eigentlich sollte es ja das script innerhalb des ifs funktionieren aber macht nicht. MsgBox sagt das es ein jpg ist. Was mach ich falsch Oo

    lol sogar wenn ich "not" auslasse kommt das selbe ergebnis.. aber wenn ihc IF ganz ablasse dann gehts

  • Not braucht klammern :)

    [autoit]

    If not ($ext = "bmp") Then

    [/autoit]

    ECht? Aber nicht doch immer oder?? Das ist mir neu.. weil hab if fragen wie z.b. if not isArray(§asd) usw.. oder if not @error. Und das funktioniert alle

    EDIT:
    So hab mal jetzt schnell gemacht. Es ließt aus "meine" Eigene Bilder jpg bilder und wandelt sie ins bmp was in Eigen Dateien gespeichert wird. Und dann wird der als Hintergrund bild gemacht. Vllt mach ich noch weiter, sodass es gif bilder und jpg und bmp usw zs zufällig auswählt.

    Spoiler anzeigen
    [autoit]


    ;--------------------------------------------------------;
    Global Const $SPIF_UPDATEINIFILE = 0x01
    Global Const $SPIF_SENDWININICHANGE = 0x02
    Global Const $SPI_SETSCREENSAVEACTIVE = 0x11
    Global Const $SPI_SETDESKWALLPAPER = 0x14
    Global Const $SPI_GETDESKWALLPAPER = 0x73

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

    $ppic = _FileListToArray("C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder", "*.jpg")
    $result = _ArrayMax($ppic)
    $rpic = $ppic[random(0, $result ,0)]

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

    Global $Bitmap = "C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder" & "\"& $rpic

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

    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "REG_SZ", "0")
    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "0")
    $ext = StringTrimLeft($Bitmap, StringInStr($Bitmap, ".", -1))

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

    If not ($ext = "bmp") then
    _GDIPlus_Startup()
    $Bild = _GDIPlus_ImageLoadFromFile($Bitmap)
    _GDIPlus_ImageSaveToFile($Bild, @MyDocumentsDir & "\wallpaper.bmp")
    _GDIPlus_ImageDispose($Bild)
    _GDIPlus_Shutdown()
    endif

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

    _SetDeskWallpaper(@MyDocumentsDir & "\wallpaper.bmp")

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

    Func _SetDeskWallpaper($Filename)
    DllCall("user32.dll", "long", "SystemParametersInfo" _
    , "long", $SPI_SETDESKWALLPAPER _
    , "long", 0 _
    , "str", $Filename _
    , "long", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDWININICHANGE) _
    )
    EndFunc ;==>_SetDeskWallpaper

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

    Func _GetDeskWallpaper()
    Local $Filename = DllStructCreate("char[256]")
    DllCall("user32.dll", "long", "SystemParametersInfo" _
    , "long", $SPI_GETDESKWALLPAPER _
    , "long", 255 _
    , "ptr", DllStructGetPtr($Filename) _
    , "long", 0 _
    )

    Return DllStructGetData($Filename, 1)
    EndFunc ;==>_GetDeskWallpaper
    MsgBox(0,"",$Bitmap & " Als Hintergrund übernommen")
    ;--------------------------------------------------------;

    [/autoit]


    Leider hab ich keinen Makrobefehl für Eigene Bilder gefunden

    6 Mal editiert, zuletzt von MaZy (25. Juli 2008 um 23:26)

    • Offizieller Beitrag

    Jop.
    Stimmt schon:
    Bei not $ext = "bmp" wird von links nach rechts ausgewertet, also not $ext (ergibt false) und dann false = "bmp", was niemals stimmt. Mit den Klammern wir die korrekte Reihenfolge rechts-nach-links erzwungen.
    Bei deinen Beispielen ist es egal, weil es nur eine Boole'sche Operation gibt :).

    peethebee

  • müsste Zeile 8 deines Spoilers nicht

    $ppic = _FileListToArray("C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder", "*.*")

    anstelle von $ppic = _FileListToArray("C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder", "*.jpg")

    heissen ?

    weil er ja sonst gar keine bmp in das array übernimmt. . .

    oder täusche ich mich da jetzt ...

  • ;) .. egal ob Leichenschänder oder nicht .. ich mache dinge gerne fertig ...

    also hier ein komplett lauf fähiges Programm.

    welches alle in einem Ordner befindlichen bmp oder jpg Dateien einliest, und via Zufall eines als Hintergrund darstellt.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>
    #include <gdiplus.au3>

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

    Global Const $SPIF_UPDATEINIFILE = 0x01
    Global Const $SPIF_SENDWININICHANGE = 0x02
    Global Const $SPI_SETSCREENSAVEACTIVE = 0x11
    Global Const $SPI_SETDESKWALLPAPER = 0x14
    Global Const $SPI_GETDESKWALLPAPER = 0x73
    Global $target = @ScriptDir & "\Wallpapers"
    Global $aktuellesWP = $target & "\aktuell"

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

    $ppic = _FileListToArray($target, "*.*")

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

    ;_ArrayDisplay($ppic,"test")

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

    $result = $ppic[0]

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

    ;MsgBox(0,"",$result)

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

    $random_nummer = Random(1, $result ,1)

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

    ;MsgBox(0,"",$random_nummer)

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

    dim $rpic = $ppic[$random_nummer]

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

    ;MsgBox(0,"",$rpic)

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

    Global $Bitmap = $target & "\"& $rpic

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

    ;MsgBox(0,"",$Bitmap)

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

    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "REG_SZ", "0")
    RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "2")

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

    $ext = StringTrimLeft($Bitmap, StringInStr($Bitmap, ".", -1))

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

    ;MsgBox(0,"",$ext)

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

    If not ($ext = "bmp") then
    ; MsgBox(0,"Hintergrundbild","Bild muss konvertiert werden.")
    _GDIPlus_Startup()
    $Bild = _GDIPlus_ImageLoadFromFile($Bitmap)
    _GDIPlus_ImageSaveToFile($Bild, $aktuellesWP & "\wallpaper.bmp")
    _GDIPlus_ImageDispose($Bild)
    _GDIPlus_Shutdown()

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

    Else
    FileCopy($Bitmap, $aktuellesWP & "\wallpaper.bmp",1)

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

    endif

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

    ;MsgBox(0,"",$aktuellesWP & "\wallpaper.bmp")

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

    if FileExists($aktuellesWP & "\wallpaper.bmp") Then
    _SetDeskWallpaper($aktuellesWP & "\wallpaper.bmp")

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

    Else
    MsgBox(0,"Hintergrundbild","FEHLER - Bild existiert nicht")

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

    EndIf

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

    ;MsgBox(0,"EXIT","Exit")

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

    Exit

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

    ;#####################################################################################

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

    Func _SetDeskWallpaper($Filename)

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

    DllCall("user32.dll", "long", "SystemParametersInfo" _
    , "long", $SPI_SETDESKWALLPAPER _
    , "long", 0 _
    , "str", $Filename _
    , "long", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDWININICHANGE) _
    )

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

    ;MsgBox(0,"",$Filename & " Als Hintergrund übernommen")
    EndFunc ;==>_SetDeskWallpaper

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

    Func _GetDeskWallpaper()
    Local $Filename = DllStructCreate("char[256]")
    DllCall("user32.dll", "long", "SystemParametersInfo" _
    , "long", $SPI_GETDESKWALLPAPER _
    , "long", 255 _
    , "ptr", DllStructGetPtr($Filename) _
    , "long", 0 _
    )

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

    Return DllStructGetData($Filename, 1)
    EndFunc ;==>_GetDeskWallpaper

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

    ;--------------------------------------------------------;

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

    .. viel spaß, für den, den's noch interessiert ..