Grundlegende Änderungen am Code


Da ich bereits schrieb, dass eine Anwendung für die Systemsteuerung eigentlich eine DLL ist, müssen wir selbstverständlich den Programmkopf "program" durch "library" ersetzen. Außerdem benötigen wir die Unit "Cpl.pas", in der speziell CPL-Nachrichten und -Records enthalten sind, mit deren Hilfe wir die Anwendung später dazu bringen, korrekt auf die Anfragen des Systems zu reagieren

library ControlPanel;
uses { ... }, Cpl;

Wenn Sie min. Delphi 4 besitzen, können Sie auch bereits im Programmcode die Endung der kompilierten Datei festlegen. Als Systemsteuerungsmodul muss unser Programm die Endung ".cpl" besitzen

{$E cpl}

Ihre Dialogprozeduren u.ä. können Sie im Moment unverändert übernehmen. Wichtig ist nur die neue Funktion "CPlApplet", die jedes Systemsteuerungsmodul haben muss. Auf die Funktion selbst komme ich im nächsten Kapitel zurück, hier soll nur erwähnt werden, dass der Name "CPlApplet" kein Schreib- oder Tippfehler ist. Das große P ist Absicht und muss auch von Ihnen benutzt werden, sonst wird die Anwendung später in der Systemsteuerung nicht angezeigt

function CPlApplet(hwndCpl: HWND; uMsg: UINT; lp1, lp2: LPARAM): longint;
  stdcall;
begin
  { ... }
end;

Diese Funktion muss von der Anwendung exportiert werden

exports
  CPlApplet;

Die einzige Möglichkeit, intern einen anderen Funktionsnamen als "CPlApplet" zu verwenden, steht Ihnen durch die Benutzung von "name" zur Verfügung. Damit legen Sie den zu exportierenden Funktionsnamen selbst fest, bspw.

exports
  MyCplFunc name 'CPlApplet';


Und da die Kommunikation diesmal anders abläuft, sollten Sie nach Möglichkeit auch den Hauptteil des Programms leeren. Da Sie hier sicher im Normalfall den notwendigen Code zum Erzeugen und Anzeigen der Dialoge o.ä. aufrufen, müssen Sie sich Gedanken darüber machen, wie Sie dies in einer Anwendung für die Systemsteuerung handhaben wollen. Speziell der Code für den Dialog muss natürlich entfernt werden, da er erst später bei der Auswahl des Moduls in der Systemsteuerung angezeigt werden soll. Gegen den Aufruf von Prozeduren und Funktionen, mit denen Sie grundlegende Dinge initialisieren, ist aber natürlich nichts zu sagen.

begin
end.

So weit, so gut.