Ich habe Ihre Webseite bei der Suche zu meinem Delphi-Problem gefunden. Ich möchte einen Bildschirmschoner entwickeln, an dem man auch selbst Einstellungen vornehmen kann. In der Literatur steht, daß Windows dabei den Parameter /c übergibt. Diesen Parameter frage ich ab, aber beim Aufruf von /c öffnet sich das vorgesehene Fenster zur Bildschirmschonerkonfiguration nicht, wenn ich das fertige Programm in der Systemsteuerung teste.
Antwort: Die Ursache ist ein Fehler in der Fachliteratur und in den Beispiel-Quellcodes. Beim Aufruf des Konfigurationsfensters wird nicht nur "/c" als Parameter übergeben, sondern /c, ein Doppelpunkt und ein Fensterhandle.
Daher sind viele Beispiele im Web und in der Fachliteratur falsch.
if (UpperCase(ParamStr(1))='/C' then begin //funktioniert nicht !
Der Aufrufparameter wird nicht als zwei Zeichen langer String-Parameter übergeben, sondern ist durch den Doppelpunkt und die Nummer des Fensterhandles länger. Daher wird die Bedingung "Der übergebene Parameter ist zwei Zeichen lang und lautet /C" nie erfüllt.
Wenn man das nachfolgende Fensterhandle nicht auswerten will, kann man den Parameterstring auf 2 Zeichen kürzen:
parameter:=copy(UpperCase(ParamStr(1)),0,2);
if parameter='/C' then begin...
Das sollte für die einfache Programmierung eines Bildschirmschoners funktionieren.
Um das Zusammenspiel der Aufrufparameter bei Windows-Bildschirmschonern zu erkennen, empfehle ich folgende Vorgehensweise (Delphi):
procedure TForm1.FormCreate(Sender: TObject);
var parameter: string;
begin
parameter:=UpperCase(ParamStr(1));
label1.caption:=parameter;
end;
Nun richten Sie diesen (wahrscheinlich) "Projekt1" heißenden Bildschirmschoner in der Systemsteuerung ein. Wählen Sie die Datei in den Anzeigeeinstellungen aus, klicken Sie abwechselnd auf "Vorschau" und "Einstellungen". Jedesmal wird sich nun das Form1 öffnen und im Label1 den von Windows übergebenen Aufrufparameter anzeigen.