WallpaperChanger v1.20 (c) 1995 Steffen Kaiser & Rolf Roßius EINFÜHRUNG Dieses Programm bringt etwas Abwechslung in WindowsTM 3.1(1). So ändert es periodisch den Windowshintergrund mit einem zufällig ausgewählten Bild. DISCLAIMER (standard disclaimer) "The WallpaperChanger program is supplied as is. The authors disclaim all warranties, expressed or implied, including, without limitation, the warranties of merchantability and of fitness for any purpose. The authors assume no liability for damages, direct or consequential, which may result from the use of the WallpaperChanger." Will sagen: Die Autoren übernehmen keinerlei Gewährleistung für dieses Programm und sind für keinerlei durch das Programm entstandene Schäden, ob direkt oder indirekt, haftbar. Dieses Programm ist Freeware, Sie können es ohne jegliche Registrierung oder Bezahlung frei nutzen, ohne es jedoch zu verändern oder als Ihr eigenes auszugeben. Sie können dieses Paket jedem anderen bzw. diesem Paket beliebige Dateien hinzufügen, solange das entstehende Paket Freeware bleibt. Bitten verbreiten Sie es weit. ÄNDERUNGEN SEIT VERSION 1.1 ø Unterstützung privater INI Dateien, entweder über die Datei "chgwall.ini" im Windows-Verzeichnis oder mithilfe einer "IniFile=" Zeile. Fehlt "chgwall.ini" wird die Sektion "[WallpaperChanger]" in der WIN.INI Datei genutzt. ÄNDERUNGEN SEIT VERSION 1.01 ø Unterstützung der Installation durch automatisches Erzeugen der Sektion in der Datei WIN.INI. ø Das Textfenster wurde abgeschafft. ø Das Programm startet als Icon und kann optional versteckt werden, d.h. unsichtbar laufen. ø Durch Erweiterung der Spezifikationsmöglichkeiten für die Bilddateien können all diejenigen Bildformate benutzt werden, die Windows standardmäßig erkennt, z.B. BMP und einige RLE-Formate. ø Um die Variationsmöglichkeiten weiter zu erhöhen, können die Bildspezifikationen automatisch entfernt werden. ø Bei Fehlern wird eine Meldebox erzeugt. (Leider in English.) ø Erweiterte Optionsvielfalt. DAS PAKET chgwall.exe Ausführbares Programm chgwall.ini Beispiel einer privaten INI Datei chgwall.wri Diese deutsche Dokumentation chgwalle.wri Die englische Version dieser Dokumentation History Geschichte dieses Programms INSTALLATION Möchten Sie die Initialisierungsparameter des WallpaperChangers IN der der Datei WIN.INI ablegen, kopieren Sie die Datei "chgwall.ini" NICHT in das Standard-Windowsverzeichnis. Möchten Sie weder "chgwall.ini" noch "win.ini" im Standard-Windowsverzeichnis dafür nutzen, müssen Sie trotzdem in eine der beiden Dateien eine Sektion "[WallpaperChanger]" mit dem Inhalt "IniFile=" einfügen, wobei "" für den Namen der INI Datei steht. Kopieren Sie "chgwall.exe" in ein beliebiges Verzeichnis und starten Sie "chgwall initialize". Dieser Aufruf erzeugt folgende Zeilen in der INI Datei: [WallpaperChanger] Directory= ; Base directory of picture files Time=3600 ; change time in seconds Restart=Reinit ; what 2nd instance is to do: quit, stop, go, toggle, reinit Hide=No ; Hide icon after start (Boolean) Info= ; Writes info into this file (none) IniFile= ; other INI file errRetry=10 ; retry # pictures, if load failed Delayed=No ; Change the first time immediatly after program start ChkMaximized=0 ; check for maximized application each #th picture (disabled)" Mask1=*.bmp ; Mask for picture files, can contain paths MaskDelete=No ; Delete all entries beginning with "Mask" ;MaskTime= ; overrides Time= Passen Sie nun die Werte Ihren individuellen Bedürfnissen an, dabei bedeuten: "Directory": Pfad zu den Bilddateien (Std.: Windowsverzeichnis) "Time": Zeit zwischen zwei Bildwechseln in Sekunden (Std.: 1h) "Restart": Enthält die Kommandozeile, welche als Standard angenommen wird, wenn beim zweiten Aufruf von "chgwall" keine Kommandozeilenparameter angegeben wurden. (Std.: Reinit) "Hide": Nach Programmstart soll das Icon versteckt werden; als Werte für "Ja" sind: 1, Yes, On und True zuläßig. (Std.: Aus) "Info": In dieser Datei werden einige zusätzliche Informationen gespeichert, die vom Programm selbst nicht benötigt werden. Ist einmal eine Datei eröffnet, bleibt sie bis zum Beenden des WallpaperChangers geöffnet, daran ändert auch "Reinit" nichts. (Std.: ohne) "IniFile": Statt der aktuellen INI Datei soll eine andere genutzt werden. Ist der Pfad nicht vollständig, wird er relativ zum Windows-Verzeichnis verstanden. Diese Zeile wird vor und unabhängig aller anderen ausgewertet und bearbeitet. (Std.: ohne) (s. REKURSION IN DER INI DATEI) "errRetry": Kann ein Bild nicht geladen werden, wird versucht ein neues zu laden. Diese Option gibt an, wieviele Bilder maximal ausprobiert werden dürfen. Damit wird eine Endlosschleife verhindert, falls gar kein Bild geladen werden konnte. (Std.: 10) "Delayed": Diese Option gibt an, ob das erste Bild verzögert geladen werden soll, d.h. nicht sofort nach dem Starten von "chgwall", sondern nach dem ersten Ablauf der Bildwechselzeit. Diese Option ist nur für die erste Instanz bindend. Falls Sie den WallpaperChanger automatisch starten, sollten Sie entweder diese Option anschalten oder über Systemsteuerung|Desktop das Laden eines Hintergrundbildes verhindern. Werte für "Ja" siehe "Hide". (Std.: Aus) "ChkMaximized": Falls diese Option auf eine Zahl verschieden von Null gesetzt wird, sucht WallpaperChanger nach dem Wechsel des n-ten Bildes nach Applikation im Vollbild-Modus. Falls eine solche gefunden wird, geht er in den "stop"-Modus über, welchen er nur durch "go", "reinit" oder, wenn keine Applikation im Vollbild-Modus läuft, verläßt. "Mask": Diese Optionen werden im Kapitel DYNAMISCHE INITIALISIERUNG beschrieben. MERKE Geben Sie in der "IniFile" Zeile keinen Parameter an, wird diese Zeile ignoriert. Sollte die INI Datei, welche Sie mit "IniFile=" angeben, nicht existieren oder keine Sektion "[WallpaperChanger]" oder sich in dieser Sektion kein (beliebiger) Eintrag befinden, wird die Standard-INI-Datei "win.ini" benutzt. Das Verzeichnis, was Sie mit "Directory=" angeben, sollte das Laufwerk und den vollständigen Pfad enthalten, z.B.c:\windows\bilder. Sollte das Verzeichnis oder diese Zeile nicht vorhanden sein, wird der Standard-Windows-Pfad verwendet, d.h. der Pfad, in dem sich die Datei "win.com" befindet. Die Zeit, welche Sie mit "Time=" angeben, wird auf ein Vielfaches von 10 abgerundet, d.h. schreiben Sie "Time=11", verwendet das Programm 10 Sekunden. Geben Sie weniger als 10s oder mehr als 32.767s an, wird 3.600s (1h) genutzt. Deiconifizieren Sie den WallpaperChanger, wird ein leeres Fenster angezeigt. Sollte während des Startens von WallpaperChanger ein Fehler auftreten, wird eine Meldebox erzeugt, welche durch "OK" wieder verlassen wird. Währenddessen können Sie keine zweite Instanz von WallpaperChanger startet. CHGWALL AUTOMATISCH STARTEN Der einfachste Weg ist es, die Icone des WallpaperChangers in die Autostart-Gruppe Ihres Programmanagers bzw. der jeweiligen Windows-Shell, die Sie nutzen. Da "chgwall" keine spezielles Zeitverwaltung besitzt, kann es vorkommen, daß einige auch automatisch gestarteten Programme die Abarbeitung von "chgwall" verzögern. Dazu zählt z.B. das Abspielen einer .WAV-Datei mit dem MediaPlayer. Der etwas komplizierte Weg ist es, die Datei "win.ini" zu ändern. Suchen Sie dort eine Zeile, welche mit "load=" und fügen Sie " chgwall.exe" hinzu. [Achtung: Das Leerzeichen ist wichtig.] Sollte noch keine solche Zeile existieren, erzeugen Sie unter der Rubrik "[windows]" eine neue, in diesem Fall ist das Leerzeichen unnötig. Bsp.: alte Zeile: [windows] load=c:\windows\appl\atm.exe neue Zeile: [windows] load=c:\windows\appl\atm.exe chgwall.exe Achtung: Sollten Sie einen eigenen Windows Loader (load/run-Manager) nutzen, sehen Sie in dessen Handbuch nach, wie Sie ein neues Programm laden. Sollte Windows die Datei "chgwall.exe" nicht finden können, ergänzen sie einfach den vollständigen Pfad. Bsp.: [windows] load=c:\windows\appl\atm.exe c:\windows\chgwall.exe vorausgesetzt, "chgwall.exe" befindet sich Verzeichnis c:\windows. KOMMANDOZEILENOPTIONEN Diese sind vielleicht für Windowsprogramme etwas unüblich, doch kann ich mir nicht vorstellen, daß Sie sie häufig nutzen werden. Ansonsten gibt es eine einfache Methode, sie in den Programmanager einzubinden: 1. Öffnen Sie im Programmanger eine Gruppe, in der Sie den WallpaperChanger unterbringen möchten; 2. Öffnen Sie im Dateimanager das Verzeichnis, das "chgwall.exe" enthält; 3. Ziehen Sie die Datei vom Dateimanager so oft in die Gruppe, wie Sie Kommandozeilenoptionen benötigen; und 4. Hängen Sie die Option in der File|Eigenschaften-Dialogbox im Feld "Befehlszeile" an. Die Datei "chgwall.exe" ist trotz der vielen Einträge nur einmal vorhanden, so daß kein Platz auf der Festplatte verschwendet wird. Bei den Kommandozeilenoptionen wird die Groß- und Kleinschreibung ignoriert und es darf immer nur eine angegeben werden. Starten Sie eine zweite Instanz des WallpaperChangers, wird die erste, sich bereits im Speicher befindliche angesprochen; d.h. Sie können zur selben Zeit WallpaperChanger nur einmal laufen lassen. Falls nicht anders angegeben, werden Kommandozeilenoption bei der ersten Instanz ignoriert. Folgende Kommandozeilen sind erlaubt: "quit": WallpaperChanger beenden und aus dem Speicher entfernen. Geben Sie diese Option bei der ersten Instanz an, wird WallpaperChanger gar nicht geladen. "stop": WallpaperChanger anhalten. "go": WallpaperChanger wieder starten, dabei bleiben die ursprünglichen Einstellungen erhalten. Außerdem wird das Hintergrundbild gewechselt, ohne jedoch die Bildwechselzeit zu beachten. "toggle": zwischen stop und go umschalten. "reinit": Ließt die Informationen aus der Datei WIN.INI neu ein und startet WallpaperChanger wieder, falls er angehalten wurde. Dies ist die Standardaktion der ersten Instanz. "initialize": Schreibt die oben genannten Zeilen in die Datei WIN.INI. Sie sollte nur zur Initialisierung verwendet werden, da sonst alle persönlichen Einstellungen verloren gehen. "none": veranlaßt, den Windowshintergrund zu löschen und geht anschließend in den "stop"-Zustand. Wird diese Option bei der ersten Instanz angegeben, bleibt WallpaperChanger nicht geladen. alle anderen: werden als Dateiname interpretiert und geladen. Bei einem Fehler wird eine Fehlermeldung generiert. Wird diese Option bei der ersten Instanz angegeben, bleibt WallpaperChanger nicht geladen. DYNAMISCHE INITIALISIERUNG Neben den im Kapitel INSTALLATION angesprochenen Befehlszeilen existieren noch folgende: MaskTime=30 MaskDelete=Yes/No Mask1=*.bmp Mask2=*.rle Mask3=..\privat\*.* Mask4=e:\bilder\*.2 MaskIniFile=d:\windows\appl\chgwall.nt Dabei ersetzen "MaskTime" die Angabe in "Time" und "Mask*" die Standardbilddateimaske "*.BMP". In diesem Beispiel also: Statt der 120s Wechselzeit (s. oben) sollen 30s benutzt werden. Das Suchen der Bilder erfolgt nicht mehr über die Suchmaske "*.BMP" im Windowsverzeichnis (oben enthält die "Directory" Zeile keinen Pfad), sondern über die Suchmasken: ø *.BMP im Standardverzeichnis ø *.RLE im Standardverzeichnis ø alle Dateien im Verzeichnis "..\privat" relativ zum Standardverzeichnis und ø *.2 im Verzeichnis "e:\bilder" Die Mask* Zeilen müssen fortlaufend nummeriert werden, da sie sonst nicht gefunden werden. Die Befehlszeile "MaskDelete" steuert, ob alle diese Befehlszeilen direkt nach ihrem Lesen aus der INI Datei zu entfernen sind (bei Standard: "Yes" ). Damit ist es möglich, sich Klassen von Bildern anzulegen und die "Mask*"-Zeilen vor dem Start von Windows in die Datei INI zu schreiben bzw. während des Windowslaufs zu generieren und dann mit dem "Reinit" Kommando der zweiten WallpaperChanger Instanz die neuen Werte aus der INI Datei zu lesen. "MaskIniFile" ersetzt die "IniFile" Zeile und wird vor und unabhängig aller anderen Zeilen ausgewertet. Deshalb wird diese Zeile unabhängig von der Existenz von "MaskDelete" gelöscht. (s. REKURSION IN DER INI DATEI) REKURSION IN DER INI DATEI Die "IniFile" Zeile ermöglicht eine Rekursion, z.B.: Datei WIN.INI: [WallpaperChanger] IniFile=chgwall.1 Datei CHGWALL.1: [WallpaperChanger] IniFile=chgwall.2 Datei CHGWALL.2: [WallpaperChanger] IniFile=. "IniFile=." bedeutet, daß wieder WIN.INI benutzt wird, da Sie keine Datei mit dem Namen "." anlegen können. Ohne Rekursionstest würde die Initialisierung nie beendet werden. Deshalb wird in jeder gelesenen INI Datei die Zeit abgelegt, bei der die Initialisierung begann. Triftt der WallpaperChanger auf eine Datei, die bereits zu dieser Zeit benutzt wurde, hört er auf nach anderen INI Dateien zu suchen. Im obigen Fall, kämen die Zeilen aus WIN.INI zur Anwendung. AUSGABEN VON CHGWALL Beim Start von "chgwall" werden folgende Informationen in die Datei "Info" ausgegeben: #Starting changing wallpaper: ##Directoty=c:\windows\bilder\ ##Time=120s ### 11 pictures ready to show was bedeutet: Aller 120 Sekunden ändert "chgwall" den Windowshintergrund mit einem zufällig aus dem Verzeichnis c:\windows\bilder stammenden Bild. In diesem Verzeichnis befinden sich zur Zeit elf Dateien. Während des Laufs: Change Wallpaper to c:\windows\bilder\myriam.bmp was bedeutet: Diesmal wird als Hintergrund "c:\windows\bilder\myriam.bmp" angezeigt. FÜR INTERESSIERTE Die erste Instanz wird über Botschaften gesteuert: 401: Reinit 402: Go 403: Stop 404: Toggle 405: None 406: ViewFile; lParam enthält das "GlobalAtom" mit dem Namen, welches gelöscht wird. AUTOREN Dies ist die Nachfolgerversion unseres Erstlingswerks. Obwohl keine geplant war und wir MS Windows aufgegeben haben, wurden doch einige Wünsche geäußert. Menüs und Ausgaben sind immernochnicht implementiert; sie erscheinen uns nicht wichtig. Wenn Sie wollen, können Sie uns wie folgt erreichen: e-mail: Steffen.Kaiser@fh-rhein-sieg.de