Laden...

Wie XmlNode and VB6 COM-Dll übergeben?

Erstellt von DarkTron vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.672 Views
D
DarkTron Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren
Wie XmlNode and VB6 COM-Dll übergeben?

Hallo,
ich habe folgendes Problem. Ich möchte aus C# heraus eine Methode einer mit Visual Basic 6 erstellten COM-Dll aufrufen. Ansich ja kein Problem. Nur erwartet die Visual Basic Methode als Eingabeparameter ein Objekt vom Typ IXMLDOMElement aus dem msxml4.

Bis jetzt habe ich folgendes versucht:


Type      OldCOMDLL;
Object    OldCOMInst;
Object[]  para 

para[0] = Data.DocumentElement.ChildNodes;

OldCOMDLL = Type.GetTypeFromProgID("TS_ETC.CreateHWSystem");
OldCOMInst = Activator.CreateInstance(OldCOMDLL);
OldCOMDLL.InvokeMember("PerformAction",System.Reflection.BindingFlags.InvokeMethod,null,OldCOMInst,para);

Die aufgerufenen Methode bekommt zwar ein Objekt geliefert kann damit aber leider nichts anfangen.

Daher meine Frage, wie kann ich aus C# heraus eine COM Methode aufrufen und ihr eine .Net XmlNode als msxml4 IXMLDOMElement übergeben?

C
1.215 Beiträge seit 2004
vor 19 Jahren

ich würde hier eher eine struct schreiben, welche den VB-type nachbildet, und dann die methode per dll-import als extern aufrufen und die struct übergeben.

grtz
chief

D
DarkTron Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren

Hi,
das mit dem Struct funktioniert leider nicht, da es sich ja um ein IXMLDOMElement Objekt handelt, welches vom MSXML2 bereitgestellt wird.

Aber ich habe jetzt heraus, dass wenn ich übber interop auf den MSCML2 zugreife und XMLDOMDocument anlege. Dieses mit Daten fülle und dann mir eine ChildNode davon geben lasse, dann ist diese ja auch ein COM-Objekt und kann ohne Probleme als Eingabeparameter meiner COM-Dll genutzt werden.

Das finde ich aber ist keine "feine" Lösung. Ich möchte ja die System.Xml Möglichkeiten nutzen und dann erst die fertigen Daten an meine Dll übergeben. Gibt es eine einfache Möglichkeit umd eine XmlElement Objekt in ein IXMLDOMElement COM-Objekt zu "parsen"?