Home » Tipps & Tricks » System » Desktop und Taskleiste » Bildschirmschoner programmieren

Bildschirmschoner programmieren

Einen Bildschirmschoner mit Delphi zu erstellen, ist eigentlich nicht sonderlich schwer. Es gibt aber ein paar Besonderheiten, die zu beachten sind.Erstelle zuerst eine neue Anwendung.Der erste Unterschied zu einem normalen Programm ist die Dateinamenserweiterung ‚.scr‘ statt .exe‘. Öffne dazu in Delphi über das Menü Projekt/Optionen den Eigenschaften-Dialog. Trage dort in der Registerkarte ‚Anwendung‘ bei ‚Ausgabe-Datei Erweiterung‘ .scr‘ ein.Als nächstes gilt es, dem Schoner einen Namen zu geben, der dann in der Auswahlliste der Bildschirm-Eigenschaften erscheint. Theroretisch könnte Windows dafür ja den Dateinamen des Schoners verwenden. Da zu Zeiten von Win 3.1 aber keine langen Dateinamen unterstützt wurden und 8 Zeichen meistens zu kurz wären, müssen wir den Umweg über die Compiler-Direktive $D gehen:

{$D SCRNSAVE:Mein erster Bildschirmschoner}

Trage diese Zeile am besten in den Projekt-Quelltext ein, die du über Projekt/Quelle erreichen kannst, gleich vor ‚Begin‘ ein.
Wichtig: Der Name muss bis einschl. Windows XP mit SCRNSAVE beginnen.
Ab Windows Vista muss er so aussehen:

{$D 'Mein Bildschirmschoner'}

Ein Windows-Bildschirmschoner besteht normalerweise aus 3 Fenstern: Das eigentliche Schoner-Fenster, einen Einstellungsdialog und eine Vorschau. Je nach dem, welches Fenster angezeigt werden soll, übergibt Windows verschiedene Paramter. ‚/s‘ um den Schoner zu aktvieren(’save‘), ‚/c‘ für den Konfigurationsdialog(‚configure‘) und ‚/p‘ für die Vorschau(‚preview‘).
In dieses einfache Beispiel werden wir allerdings keine Vorschau einbauen, so dass wir also noch eine zusätzliche Form benötigen.
Füge dem Projekt eine neue Form hinzu.
Im Projekt-Quelltext werden wir nun das Paramter auswerten und ja nach dem die Schoner- oder die Eigenschaften-Form anzeigen.
Schreibe zwischen Begin und End also Folgendes. Für die Funktion UpperCase muss die Unit SysUtils eingebunden werden.

Application.Initialize;
{$IFDEF Dummy}
Application.CreateForm(TForm1, Form1);
{$ENDIF}
if UpperCase(Copy(Paramstr(1),1,2))='/C' then
  Application.CreateForm(TSaverForm, SaverForm)
else if UpperCase(Paramstr(1))='/S' then
  Application.CreateForm(TConfigureForm, ConfigureForm);
Application.Run;

Jetzt wirst du dich fragen: Was soll diese bedingte Kompilierung mit ‚Dummy‘ und so? Ganz einfach: Delphi lässt nicht zu, dass die CreateForm-Anweisungen nur innerhalb einer If-Abfrage stehen.Schließlich, so befürchtet der Compiler, könnte es ja passieren, dass keine der Bedingungen wahr ist und dann auch keine Form erzeugt wird.Deshalb packen wir eine Create-Anweisung in diese bedingte Kompilierung. Der Clou dabei ist: Dummy ist nie definiert, deshalb wird diese Zeile auch nie ausgeführt.So, die Projektdatei ist nun fertig. Der Rest wird von den Formularen erledigt.Das Einstellungen-Fenster enthält in unserem Fall keine Einstellungen, sondern nur einen Copyright-Hinweis.Für das Schoner-Fenster sind noch einige Schritte notwendig. So sollte die Form maximiert und ohne Rand erscheinen, ein schwarzer Hintergrund wäre auch nicht schlecht.-> Setzte die Eigenschaft Borderstyle des Formulars auf bsNone, die Eigenschaft WindowState auf wsMaximized und die Color auf clBlack.Auch der Cursor sollte ausgeblendet werden:

Cursor := -1

oder unter Delphi 1:

ShowCursor(false);

Außerdem sollte der Schoner bei einer Mausbewegung oder einem Tastendruck beendet werden. Schreibe dazu folgende Zeile in die Ereignis-Prozeduren onKeyDown und onMouseOver:

Application.Terminate;

Nun ist deine Kreativität gefragt. Gestalte den Bildschirmschoner so wie du willst. Für das erste dürfte es aber reichen, ein paar Linien oder Texte auf dem Canvas auszugeben.Wenn dein Screensaver fertig ist, kopiere die kompilierte Scr-Datei ins Windows-Verzeichnis – fertig!