Vielleicht noch paar Tipps und Verbesserungsvorschläge.
Zuerst eine Kleinigkeit die kaum Aufwand bedeutet. Wenn man im Explorer sich die Eigenschaften deines Screensavers anguckt, dann steht unter "Beschreibung" der Dateiname deines Bildschirmschoners ohne die Endung. Das ist keine Katastrophe, aber in der Regel haben Bildschirmschoner hier eine Bezeichnung. Der Text der in den Eigenschaften als Beschreibung dient ist eine der Versionsinfos. Diese kann man in Projektoptionen unter Versionsinfo angeben. Der Betreffende Punkt ist "Beschreibung". Schreib dort eine Bezeichnung die unabhängig vom Dateinamen sein kann.
Eine zweite etwas größere Kleinigkeit ist die fehlende Vorschau im Prieviewfenster unter "Eingenschaften von Anzeige" > "Bildschirmschoner". Das Prieviewfenster kann entweder das Fenster des Bildschirmschoners sein, das etwas modifiziert beim Parameter /p abgespielt wird, oder ein eigenes Fenster. Bei der ersten Methode muß man einiges abfangen. So darf das Fenster nicht bei Tastendrücken und Mausbewegungen beendet werden und muß auch auf einer kleinen Fläche noch gut aussehen. Also keine 100 Flocken im Minifenster. Die andere Möglichkeit ist ein Extrafenster. Hier kann man einfach auch nur ein Bild von einer Flocke zeigen. Bei dir wird momentan ein schwarzer Bildschirm angezeigt. Da fehlt also etwas.
Hier paar Zeilen:
Delphi-Quellcode:
'P': begin
Application.Initialize;
Application.CreateForm(TPreviewForm, PreviewForm);
Application.Run;
end;
Zum richtigen ansteuern in der Projektdatei.
Delphi-Quellcode:
procedure ScreenSaverPreview(Form: TForm);
var
OldStyle: Integer;
hWnd: THandle;
Rec: TRect;
begin
with Form
do
begin
hWnd := StrToIntDef(ParamStr(2), 0);
GetWindowRect(hWnd, Rec);
SetBounds(0, 0, Rec.Right - Rec.Left, Rec.Bottom - Rec.Top);
BorderStyle := bsNone;
Windows.SetParent(
Handle, hWnd);
OldStyle := GetWindowLong(
Handle, GWL_STYLE);
SetWindowLong(
Handle, GWL_STYLE, (OldStyle
and not WS_POPUP)
or WS_CHILD
or WS_VISIBLE);
end;
end;
{Popov}
procedure TPreviewForm.FormCreate(Sender: TObject);
begin
ScreenSaverPreview(Self);
end;
Hier ist alles was du für das Previewfenster brauchst. Es holt den Parameter, wandelt den um, paßt die Fenstergröße an, setzte das Parentfenster usw. Das Einzige was du noch machen mußt ist verhindern, daß das Fenster in der Taskleiste angezeigt wird und das Fenster mit einem Inhalt füllen.