|
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.
|