Frage mich gerade, wie es nun komplett ausschaut.
Crazy-A
Frage mich gerade, wie es nun komplett ausschaut.
Crazy-A
Ich hab das Skript ein bisschen erweitert. Aber leider funktioniert es nicht. Das Skript von Ryu_1991 hat auch nicht funktioniert.
#include <Array.au3>
#include <File.au3>
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"
RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "TileWallpaper", "REG_SZ", "0")
RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "0")
$Bilder = _FileListToArray($target, "*.bmp", 1)
[/autoit] [autoit][/autoit] [autoit]For $x = 1 To $Bilder[0]
$Bilder[$x] = $target & "\" & $Bilder[$x]
Next
_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
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
arg ok.. ich bräuchte erstmal.. ein befehl wo ich dateiendungen abfragen kann. Weil wär doch dumm wenn das script bmp zu bmp macht ^^.
peethebee hat hier eine Lösung gepostet. Funktioniert einwandfrei und ist nicht groß
danke der ist toll.
Wieso geht das nicht Oo
$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
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]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.
;--------------------------------------------------------;
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
$ppic = _FileListToArray("C:\Dokumente und Einstellungen\Nickname\Eigene Dateien\Eigene Bilder", "*.jpg")
$result = _ArrayMax($ppic)
$rpic = $ppic[random(0, $result ,0)]
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))
If not ($ext = "bmp") then
_GDIPlus_Startup()
$Bild = _GDIPlus_ImageLoadFromFile($Bitmap)
_GDIPlus_ImageSaveToFile($Bild, @MyDocumentsDir & "\wallpaper.bmp")
_GDIPlus_ImageDispose($Bild)
_GDIPlus_Shutdown()
endif
_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
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")
;--------------------------------------------------------;
Leider hab ich keinen Makrobefehl für Eigene Bilder gefunden
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
Ahh cool. Danke für die Info. Wusste nicht. Gut das ich das jetzt weiß. Wer weiß, was ich deswegen nicht hingekriegt habe
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 ...
Der Thread ist 2 Jahre alt und steht auf gelöst.
Ich glaube nicht dass dieses Thema noch aktiv ist
PS: Leichenschänder
.. 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.
#include <Array.au3>
#include <File.au3>
#include <gdiplus.au3>
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"
$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")
$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()
Else
FileCopy($Bitmap, $aktuellesWP & "\wallpaper.bmp",1)
endif
[/autoit] [autoit][/autoit] [autoit];MsgBox(0,"",$aktuellesWP & "\wallpaper.bmp")
[/autoit] [autoit][/autoit] [autoit]if FileExists($aktuellesWP & "\wallpaper.bmp") Then
_SetDeskWallpaper($aktuellesWP & "\wallpaper.bmp")
Else
MsgBox(0,"Hintergrundbild","FEHLER - Bild existiert nicht")
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) _
)
;MsgBox(0,"",$Filename & " Als Hintergrund übernommen")
EndFunc ;==>_SetDeskWallpaper
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
;--------------------------------------------------------;
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit].. viel spaß, für den, den's noch interessiert ..