Thema: Delphi COM Object und ProgId

Einzelnen Beitrag anzeigen

MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#6

Re: COM Object und ProgId

  Alt 28. Apr 2008, 13:28
Ich krame den Thread mal hervor für eine Frage meinerseits: eine ProgID setzt sich ja immer aus dem Bibliotheksnamen + "." + CoClass des zu verwendenen COM-Objekts zusammen. Um zu überprüfen, ob ein COM-Server bereits im System bekannt ist, verwende ich Shmias Funktion
Delphi-Quellcode:
function ProgIDExists(const ProgID: WideString): Boolean;
var
  tmp: TGUID;
begin
  Result := Succeeded(CLSIDFromProgID(PWideChar(ProgID), tmp));
end;
Anhand von MSXML wollte ich nun mal diese Funktion etwas testen. Ich übergebe als ProgID z.B. "Msxml2.DOMDocument40", weil "DOMDocument40" laut der importierten TLB-Pascal-Datei der Name der CoClass für das Interface IXMLDOMDocument2 ist. Der Aufruf geht jedoch schief, man muss scheinbar statt "Msxml2.DOMDocument40" "Msxml2.DOMDocument.4.0" übergeben. Jetzt frage ich mich natürlich: wieso? Wie kommt diese Diskrepanz zustande? Und woher weiß ich dann überhaupt (ohne Dr. Google befragen zu müssen), welche ProgID ich in Delphi der Funktion ProgIDExists übergeben muss, wenn es schon bei MSXML nicht hinhaut?
  Mit Zitat antworten Zitat