// Es wird anhand
einer CLSID die Programm-ID ermittel, unter der
// Voraussetzung, dass die CLSID registriert ist. Das Beispiel liest
// aus der Systemdatenbank den Schlüssel
HKEY_CLASSES_ROOT\CLSID
// in eine Listbox. Beim Doppelklick auf einen Eintrag wird die
zugehörige
// Programm-ID angezeigt, bzw. mitgeteilt, dass die ID nicht registriert
ist.
// Für MS-Word-Benutzer sollten die IDs
{00020900-...
bis {000209FF-...
// interessant sein.
// Getestet mit D4 unter XP
uses ComObj, Registry;
function ProgID(GUID: TGUID): string;
begin
result := ClassIDToProgID(GUID);
end;
procedure GetID(ts: TStrings);
var
Reg: TRegistry;
x: integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
if Reg.OpenKey('\CLSID', True)
then
Reg.GetKeyNames(ts);
finally
Reg.CloseKey;
Reg.Free;
end;
x := 0;
while x < ts.count do begin
if ts[x][1] <> '{' then ts.delete(x)
else inc(x);
end;
end;
// CLSIDs ermitteln
procedure TForm1.Button5Click(Sender: TObject);
begin
with Listbox1 do begin
Items.beginupdate;
GetID(Items);
Items.endupdate;
end;
end;
// Programm-IDs anzeigen
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
with Listbox1 do
showmessage(ProgID(StringToGuid(Items[Itemindex])));
end;
|