Sonntag, 7. September 2008

entwickler.com Magazine Konferenzen Akademie Entwickler-Forum Jobbörse Bücher
Software & Support Verlag

Klassen-ID des Comserver ermitteln

Frage: Wie kann ich die Klassen-ID (CLSID) als String wie z. B. "ComServer1.ComServer1" des eigenen Servers ermitteln?

Antwort: Die Win32-API-Funktion ProgIDFromCLSID tauscht eine CLSID (GUID) in die Programm-ID-Zeichenkette um. Der von ProgIDFromCLSID erwartete erste Parameter kann über die Delphi-Funktion StringToGUID (Unit SysUtils) mundgerecht verpackt werden, wenn die CLSID nur als Zeichenkette (Bsp: TEdit etc.) vorliegt. Das folgende Beispiel demonstriert dies mit der CLSID von Microsoft Word XP, in der MessageBox wird das Ergebnis Word.Application.10 angezeigt:

uses ActiveX;

procedure TForm1.Button1Click(Sender: TObject); var aGUID : TGUID; pwProgID : PWideChar; begin EditCLSID.Text := '{000209FF-0000-0000-C000-000000000046}'; aGUID := StringToGUID(EditCLSID.Text); ProgIDFromCLSID(aGUID, pwProgID); ShowMessage(pwProgID); end;
Im Fall des eigenen COM-Servers kann man allerdings auch direkt im Typbibliotheks-Editor von Delphi nachsehen, denn dort legt die Bezeichnung der Typbibliothek sowie der CoClass-Name die ProgID fest.






Software & Support Verlag GmbH