Schnittstelle zum Win32 Programm



  • Hallo,

    mein Problem: Ich schreibe ein Programm A basierend auf dem .NET Framework. Jetzt gibt es ein anderes Program B, welches ein normales Win32 Programm ist. Jetzt soll B das Programm A über eine COM/OLE Schnittstelle aufrufen. Es sollen Daten an A übergeben werden, A verarbeitet die Daten und gibt die Ergebnisse an B zurück. Wie ist sowas zu realisieren ist es überhaupt möglich, vielleicht über ein Trick, oder Umweg 😃

    schönen abend noch
    cu



  • WM_COPYDATA



  • Danke für diese tolle Antwort! Hat jemand vorschläge oder erfahrungen?



  • Dies ist ohne weiteres zu realisieren.

    Als erstes mußt du dir eine .tlb Datei erstellen lassen.
    Entweder mit TLBEXP.EXE oder mit REGASM.EXE (mit /tlb Option). Einziger Unterschied REGASM regestriert deine TLB mit.

    TIP: Manchmal ist es ratsam die GUID direct im Programm der jeweiligen Klasse zu übergeben. Ansonsten wird bei jedem export eine neue generiert.

    [GUID(" *** ")]
    public class ...
    

    Danach kann man es überall als COM benutzen.

    mit #import holt man sich die .tlb Datei ins Programm.

    Ich glaub der einfachste Weg ist mit ClrCreateManagedInstance. Nicht dokumentiert aber steht in der mscoree.h.
    Ein anderer Weg ist über das Interface ICorRuntimeHost. Steht in der mscoree.tlb.



  • Danke Scania,

    so nun noch ein Problem: Wenn ich jetzt ein tlb file erzeugt habe und es in einem C++ Konsole Programm per Import einbinde, erzeugt der Compiler ne reihe Dateien: tlh, tli.

    Aber wie kann ich jetzt ein Objekt von der Klasse erstellen?
    Hat jemand vielleicht dazu nen guten Link?

    danke cu


Anmelden zum Antworten