• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Zufällig wechselndes Hintergrundbild

DreamFlasher

New member
Hallo alle zusammen!
Ich hoffe ich werde jetzt nicht geköpft, weil ich ein VBScript gemacht habe, aber anders hab ichs nicht hinbekommen. Das Script soll alle Bilder eines Verzeichnisses in einen String einlesen, dann zufällig eine Datei auswählen und sie dann als Hintergrundbild der Webseite darstellen.

Code:
<html>
<head>
<title></title>
<script language="VBScript" type="text/vbscript">
<!--
Dim WshShell
Dim upperbound
Dim n
Dim fso, folder, filescollection, file
Dim regexp
Set regexp = New RegExp
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

FUNCTION rndWallpaper()
'Hier den Ordner angeben, der die Hintergrunddateien enthält.
if fso.FolderExists("D:\Dokumente\Bilder\Desktop\Wallpaper\scifi") Then
'Hier auch noch einmal den gleichen Ordner angeben.
        Set folder = fso.GetFolder("D:\Dokumente\Bilder\Desktop\Wallpaper\scifi")
        Set filescollection = folder.Files
        Dim Files()
        ReDim Files(filescollection.Count)
        n = 0
        For Each file In filescollection
                regexp.Pattern = ".jpg$"
                regexp.IgnoreCase = True
                If regexp.test(file.Name) Then
                        Files(n) = file.Path
                        n = n + 1
                End If
                regexp.Pattern = ".bmp$"
                If regexp.test(file.Name) Then
                        Files(n) = file.Path
                        n = n + 1
                End If
                regexp.Pattern = ".gif$"
                If regexp.test(file.Name) Then
                        Files(n) = file.Path
                        n = n + 1
                End If
        Next
        upperbound = n
        Randomize
        n = Int((upperbound + 1) * Rnd)
Else
        MsgBox "This folder does not exist!"
End If
END FUNCTION
//-->
</script>
<noscript></noscript>
</head>
<body onLoad="rndWallpaper()" background="'Files(n)'">

</body>
</html>

Ich würde ja hier nicht schreiben wenn es perfekt laufen würde...also es tut leider garnichts. Habt ihr ne Ahnung was noch verbessert werden müsste?
Vielen Dank
DreamFlasher
 
bevor ich mir das ding mal anschaue:
das muß unbedingt mit vbScript gemacht werden? php wäre da wesentlich einfacher...
 
Nein, die Sprache ist mir vollkommen egal, ich möchte nur dass es funzt. Aber wenn du php offline als Wallpaper bei mir zum laufen bringst, will ich dich nicht daran hindern.
 
Original geschrieben von DreamFlasher
Nein, die Sprache ist mir vollkommen egal, ich möchte nur dass es funzt. Aber wenn du php offline als Wallpaper bei mir zum laufen bringst, will ich dich nicht daran hindern.
dann wirds komplizierter. In diesem Fall würde ich das in JS lösen. Für PHP braucht man einen Webserver mit PHP-Interpret.
 
Ja eben, für PHP braucht man offline nen Server, und das ist mir zu kompliziert und dann würde dass, was ich sparen will eh wieder aufgehoben. Also ich möchte dass mein Wallpaper/Desktopbild immer zufällig ist/wechselt. Dazu mach ich ne HTML Datei als Hintergrund und diese läd dann die Graphiken, dass ganze hat den Vorteil, dass ich kein Programm dafür brauche, dass mir den Speicher wegfrisst und ich kann alle Formate nehmen die der IE unterstützt, zusätzlich wird dann mein Hintergrundbild nicht in bmp umgewandelt, wodurch ich nochmal RAM spare.
 
du willst ne html seite haben um sie als hintergrund zu nutzen....hab ich das wirklich richtig verstanden...wie alt ist denn dein rechner...
 
also dateioperationen mit js sind wohl nicht möglich...aber du könntest dir ja die dateinamen in ein array schreiben und dann per random einen index des arrays ausgeben und diesem als hintergrund laden...ist auch relativ einfach und der code ist evtl. 10 Zeilen groß und dann sparst du gleich auch recourcen , die deinem RAM nicht belasten;) :D
 
Zu microkotz: Es ist mir schon klar, dass es da jede Menge Tools gibt, aber wie gesagt, sowas will ich nicht. Du siehst doch ein, dass ne HTML Datei weniger RAM brauch als ein Programm, oder?

Zu sanchez: Das JS keine Dateioperationen kann ist richtig, deshalb wollte ich auch VBS nehmen. Das 2. ist genau das was ich haben wollte. Könntet ihr nicht versuchen mein Teil zu korrigieren? büdde büdde...
 
1. ne HTML Datei läuft nicht alleine, oder?
2. IE ist ganz schön fett, um nur mal so im Hintergrund ein Bild darzustellen
3. Das Bild wird, trotz GIF, JPEG oder was auch immer, dekomprimiert und so im Speicher gehalten, denn die Darstellung auf dem Bildschirm erfolgt immer als BMP, oder kann Deine Grafikkarte GIF oder JPEG dekodieren?
4. Kann Windows XP ned sowas schon out-of-the-box (Themes??) oder braucht man dazu das Plus Paket?
 
1. ne HTML Datei läuft nicht alleine, oder?
>man kann ne HTML als Hintergrundbild machen
2. IE ist ganz schön fett, um nur mal so im Hintergrund ein Bild darzustellen
>mich würde es freuen, wenn es möglich wäre den IE immer nur als eine Instanz zu laden, sodass ich auch bei mehreren Seiten nur einmal den IE als Prozess da hab. Weiß dazu jemand was genaueres? Für das Hintergrundbild glaub ich wird nicht der gesamt IE geladen sondern nur ein paar Funktionen davon. Außerdem hab ich was davon gehört, dass der IE eh immer aktiv ist...
3. Das Bild wird, trotz GIF, JPEG oder was auch immer, dekomprimiert und so im Speicher gehalten, denn die Darstellung auf dem Bildschirm erfolgt immer als BMP, oder kann Deine Grafikkarte GIF oder JPEG dekodieren?
>Ich weiß nicht so genau. Das einzige was ich definitiv weiß, ist dass Windows die Hintergrundbilder von selbst als BMP macht, beim IE hab ich noch nichts davon gehört.
4. Kann Windows XP ned sowas schon out-of-the-box (Themes??) oder braucht man dazu das Plus Paket?
>Sowas wär mir natürlich am liebsten, aber ich hab da noch nichts entdeckt, das Pluspaket hab ich leider nicht.
 
was ich damit sagen wollte ist: Du hast immer einen IE im Hintergrund laufen _nur_ für dieses Bild

nur eine Instanz vom IE: ist mir nicht bekannt, sowas gibt es vermutlich nicht..... bei der Stabilität des IEs wäre das auch nicht ratsam: ein Absturz und alle Fenster sind weg.... (oder ist das jetzt immer noch so, keine Ahnung)

Der IE wandelt auch nur die JPGs und GIFs in das für Windows verständliche BMP Format um und stellt sie dar. Du hast also keinen Speicherplatzvorteil, außer auf der Festplatte.

Also da Du ehh schon mit Windows Scripting Host, VBScript und Konsorten rumhampelst, dann kannst Du auch komplett weg vom IE und beim Start von Windows einfach eine BAT, CMD oder WSH Datei ausführen lassen, die das Laden einer neuen Bilddatei erledigt.... Dann wäre kein IE von Nöten und das Programm zum Wechseln ist nur kurz aktiv, wechselt das Bild und verschwindet weider. Mithilfe der "at" Funktion (siehe geplante Tasks im Explorer) kann man dann sogar alle n-Minuten / Stunden ein neues Bild erzeugen lassen.
 
Ja, so wollte ich es ursprünglich machen, das wär nämlich das perfekteste. Nur da hab ich auch wieder ein Problem: Wie geht's? Ich schaff es nur, dass das Hintergrundbild nach nem Neustart anders ist. Wie geht das direkt?
 
Hm also ich habs jetzt geschafft es runterzuladen (muss man dann noch in zip umbennen) aber ich komm mit dem Teil absolut nicht klar. Da sind VB Dateien dabei, die könnte ich zwar kompilieren, aber das Ziel, die Wall.dll ist ja schon dabei. Außerdem passiert nichts, wenn ich die vbs Datei öffne, nur ne Fehlermeldung. Da steht noch was, dass man keine jpgs öffnen kann...was hab ich dann davon???

[edit]*gg* Schon ein paar mal editiert. Also jetzt klappt es doch, mann muss nur die dll registrieren! Hast du ne Ahnung, wie man dass jetzt auch für jpgs hinbekommt?[/edit]
 
Zuletzt bearbeitet:
Registrieren wäre schon sinnvoll bei COM.... ;)

Du solltest den Browser wechseln, wenn der Dir die Datei nicht als .zip ablegt.

JPEGs kann die Funktion nicht nutzen, weil sie eigentlich nur die Standardfunktionalität von Windows nutzt, um das Wallpaper zu setzen. Du wirst also in Deinem Verzeichnis alle Bilder als BMP rumliegen haben müssen. Allerdings gibt es ja Tools, die Bilder konvertieren können, so daß Du immer nur jeweils ein Bild (bzw. zwei, das alte und das neue) unkomprimiert als BMP vorhalten müßtest. ImageMagick gibt es bestimmt auch für Windows und das kann man wunderbar über die Kommandozeile scripten.
 
Wobei wir da wieder bei nem Programm wären, dass das macht. Da kann ich auch irgendne Freeware von nem andren nehmen.
-->Könnte sich bitte jemand mal mein Script ansehen?
-->Im Kontext Menü gibts ein Punkt "Als Hintergrund", dann wird das angewählte Bild direkt übernommen. Gibt es dafür vielleicht auch ne Möglichkeit, das du simulieren?
 
um das zu "simulieren" mußt Du einen kompletten Internet Explorer in den Speicher laden, ich finde das ist schon ein Riesenunterschied zu dem "mal kurz eine Bildkonvertierung mit z.B. imagemagick anstossen". In beiden Fällen läuft das Programm nur kurz für die Dauer der Konvertierung, bzw. Wallpapertauscherei, aber der IE ist ja wohl wesentlich fetter, unflexibler und ungeeigneter für die Aufgabe als ein spezielles Bildkonvertierungstool, oder?
 
Zurück
Oben