.NET meets COM

Nicht immer kann man sofort seine Projekte komplett auf .NET umstellen. Bei der Zusammenarbeit von neuem und altem Code machen jedoch einige Stolperfallen das Leben schwer. Wir zeigen, wie Sie diese Klippen umschiffen.

Ohne "Managed Code" kommt in Zukunft kein Programmierer mehr aus. Ganz gleich, ob unter .NET oder unter Java erzeugt: Immer mehr Module, Bibliotheken und Anwendungsprogramme sind "managed".

Allerdings gibt es immer noch eine Vielzahl von "altem" Code, den man nicht mehr aktualisieren will oder kann - etwa weil man eine ActiveX-Komponente zugekauft hat und der Hersteller keine .NET-Variante anbietet. Darum ist es notwendig, dass man auch alten Code oder Bibliotheken weiterverwenden kann - zumindest mittelfristig. In diesem Beitrag erfahren Sie, wie Sie mit .NET auf "unmanaged" Code zugreifen und umgekehrt.

Der Zugriff mit .NET auf vorhandenen Win32-Code ist am einfachsten, wenn der vorliegende Code als ActiveX-Control oder COM-Objekt vorliegt, denn dafür bietet Visual Studio einen sehr guten Support. Im Prinzip kann man ActiveX-Controls in einem Visual-Studio-Projekt derart nutzen, als wären es .NET-Objekte. Damit das so einfach funktioniert, erzeugt Visual Studio im Hintergrund den passenden Wrapper-Code, der mit dem ActiveX-Control kommuniziert und dem .NET-Programm vorgaukelt, dass es sich um ein .NET-Control handelt.

Damit Sie das benötigte Vorgehen für die Nutzung von ActiveX aus einer .NET-Anwendung heraus besser nachvollziehen können, gibt es begleitend zum Artikel ein Beispielprojekt mit einem ActiveX-Control in MFC und einem C#-Projekt, das dieses Control verwendet.