Eigentlich wäre unsere neue Eigenschaftenseite damit schon lauffähig. Allerdings müssen wir noch eine kleine Änderung vornehmen, damit wir die Shell-Erweiterung ganz gezielt für einen bestimmten Dateityp (in unserem Fall: die Textdateien) registrieren können. Dazu schauen wir uns den Initialisierungscode der
Unit an, in der standardmäßig das steht:
Code:
initialization
TTypedComObjectFactory.Create(ComServer, TPSheetTest, Class_PSheetTest,
ciMultiInstance, tmApartment);
end.
Wir erstellen stattdessen aber einen neuen Typ auf folgender Basis:
Code:
type
TPSheetTestFactory = class(TComObjectFactory)
public
procedure UpdateRegistry(Register: Boolean); override;
end;
In der Funktion "UpdateRegistry" können wir nun angeben, wo der Eintrag unserer "Property Sheet" vorgenommen werden soll:
Code:
procedure TPSheetTestFactory.UpdateRegistry(Register: Boolean);
const
szTestExtension = 'txtfile\shellex\PropertySheetHandlers\';
begin
inherited;
if Register then
CreateRegKey(szTestExtension + ClassName,'',GUIDToString(ClassID))
else
DeleteRegKey(szTestExtension + ClassName);
end;
Hinweis- In unserem Beispiel greifen wir auf einen vorhandenen und bekannten Dateityp (*.txt = txtfile) zu. Wer einen eigenen Dateityp registrieren will, darf dessen Erweiterung natürlich nicht vergessen. Das Original-Beispiel von Andreas Kosch zeigt dieses Prinzip und registriert die Shell-Erweiterung für den Dateityp "OSTest" mit der Endung ".ost".
Okay, jetzt müssen wir den o.g. Initialisierungscode ändern, damit statt des Standards unsere neue Deklaration verwendet wird:
Code:
initialization
TPSheetTestFactory.Create(ComServer, TPSheetTest, Class_PSheetTest,
'PropertySheetTest', '', ciMultiInstance, tmApartment);
end.
Fertig!
Die Shell-Erweiterung registrieren und benutzen
Registriert wird unsere Eigenschaftenseite durch einen Aufruf des Programms "regsvr32.exe", dem wir den Namen unserer
DLL als Parameter übergeben:
Wenn alles geklappt hat, sollte bei den Eigenschaften der Textdateien jetzt die neue Seite zu sehen sein. Die Auswahl der Dateien in der Listbox und der Button-Klick sollten natürlich auch funktionieren.
Die Shell-Erweiterung entfernen
Entfernt wird unser Shell-Erweiterung durch einen erneuten Aufruf von "regsvr32.exe", wobei wir aber diesmal zusätzlich den Parameter "/u" angeben: