COM Object in .Net implementieren

sinamine

Mitglied
Hallo Leute!

Habe folgende Frage: ich habe ein ATL COM Object, welches in unmanaged C++ und in Visual Studio 6.0 geschrieben wurde. Dieses Control kann in C++ (z.B. in einer MFC Applikation) als ActiveX Steuerelement eingebunden werden. Genauso läuft es auch im Browser.

Nun möchte ich gerne so ein Control in .Net (2.0, 3.0 oder 3.5 - egal; VS2005 oder VS2008) implementieren. Weiß vielleicht jemand, wie man am besten ein solches Control implementieren kann? Egal ob C#, C++ oder sonst eine Programmiersprache.

Würde gerne wissen, was es für Möglichkeiten gibt um dies umzusetzen!
Vielleicht hat auch bereits jemand Erfahrung damit?
Wäre super, wenn mir jemand weiterhelfen könnten.

LG @ll
 
Hallo,

du brauchst es eigentlich nur im Projektbaum unter "Verweise" hinzuzufügen. Das Visual Studio integriert die Komponente dann automatisch.

Gruß
MCoder
 
Eigentlich habe ich gemeint, diese Komponente neu zu implementieren.
Ich denke, wenn ich sie neu implementieren würde, dann müsste ich einfach nur eine WindowsFormsControlLibrary erstellen.

Habe dies auch getan und kann diese sowohl in einer Applikation als auch in einer Web-Applikation anzeigen (genau was ich auch wollte - da ich dies auch mit meiner C++ Komponente konnte).

Wenn ich aber versuche, in einer C# Applikation meine C++ Komponente anzuzeigen, so bekomme ich folgenden Fehler:

Das COM-Objekt des Typs "MeinTyp.MyCtrlClass" kann nicht in den Klassentyp "System.Windows.Forms.Control" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.

Nun, ich weiß nicht, ob meine Komponente die IID Schnittstelle unterstützt. Kenne mich bei der COM Komponente nicht so gut aus (wurde nicht von mir geschrieben).
Kann mir jemand helfen und sagen, wie ich meine COM Komponente in eine C# Applikation hinzufügen kann? Ich verwende VS 2008 und Framework 3.5.

Wäre es sinnvoll, die COM Komponente gleich in C# neu zu schreiben? Die Komponente wurde noch in unmanaged C++ geschrieben.

Lg @ll
 
Wenn ich aber versuche, in einer C# Applikation meine C++ Komponente anzuzeigen, so bekomme ich folgenden Fehler: ...
Keine Ahnung, was du genau gemacht hast. Aber (wie schon geschrieben) du fügst es als Verweis hinzu, kannst über "Extras" und "Toolboxelemente auswählen" ggf. die GUI-Elemente in die Toolbox eintragen lassen und dann auf eine Form ziehen.
Wäre es sinnvoll, die COM Komponente gleich in C# neu zu schreiben?
Wenn die Komponente nur in einer .NET-Umgebung verwendet werden soll, würde eine Reimplementierung als .NET-Klassenbibliothek (nicht als COM) die Verwendung wahrscheinlich sehr vereinfachen.

Gruß
MCoder
 
Hey MCoder!

Danke für deinen Beitrag. Ich habe mein COM Objekt als Verweis eingebunden und im Code zu meinem Forumlar hinzugefügt, allerdings gab es hier immer einen Fehler, weil der Typ der Komponente nicht bekannt war.

Das Fenster "Toolboxelemente auswählen" kannte ich ehrlich gesagt gar nicht. Habe schon öfters eine andere Komponente (keine COM) hinzugefügt und nach dem kompilieren meine Komponente in der Toolbox vorgefunden. Deshalb war ich etwas verwundert, da dies nur mit dem Verweis nicht so war.

Also danke nochmals! Hast mir wirklich geholfen!
 

Neue Beiträge

Zurück