// 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; 



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke