[C++/C#] C# exe file openen van uit C++ exe

Pagina: 1
Acties:

  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
Ik ben al een tijdje bezig met COM Interoperating en begin het nu aardig onder de knie te krijgen. (COM Interoperating is oa nodig om je C# functies vanuit C++ aan te kunnen roepen). Ik kan dus mooi mijn gloednieuwe C# dll's benaderen vanuit mijn C++ applicatie. Dat is leuk maar nu wil ik weer een stapje verder...

Nu zitten mijn C# classes dus in een DLL. De bedoeling is nu dat ik vanuit C++ een call kan doen naar een C# executable file. Oftewel: een C# exe starten vanuit een C++ exe file.

Ik weet niet helemaal zeker of dit met Interoperating kan/moet. Als ik namelijk een C# dll will registreren voor Interoperating kan dat heel makkelijk door "Register for COM Interop" op true te zetten in de build options van het project. Dan wordt er een Type Library file aangemaakt die ik vanuit C++ kan benaderen. Helaas is de "Register for COM Interop" optie niet beschikbaar in een C# exe project. Nogmaals: ik weet niet of COM Interoperating DE optie is... alle tips zijn welkom.

Vraag in het kort:
"Hoe kan ik een C# exe file starten vanuit een C++ exe?"

Thanks, Skiwi

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 30-08 17:59

Gerco

Professional Newbie

ShellExecuteEx() :?

Het lijkt me dat windows die exe wel start voor je. Een C# .exe is toch gewoon een "normale" .exe die eerst het .NET framework ff start/init/whatever.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
Ja, dat is een optie... maar wat is beide executable files elkaar wat te vertellen hebben, onderling messages uitwisselen en als de ene applicatie niet meer nodig is wordt afgesloten door de andere? Vandaar het hele COM Interoperating verhaal om functie calls te kunnen doen op de C# executable. Dat was ik vergeten te vertellen. |:(

Verwijderd

COM objects zitten niet in een exe (kan wel, maar monikers maken in .NET is er niet bij). Stop je com objects in een aparte assembly en reference die in je C# .exe. Zodoende kun je je com objects ook in C++ benaderen. Daar gaat het imho toch om? Je wilt dingen doen die niet kunnen, dus doe ze op de manier zodat ze wel kunnen, levert een hoop vreugde op.

Verwijderd

als het voor windows is:
de functie "WinExec" (win32 api) geeft volgens mij de handle terug van het proggie dat ie start. Die kan je dan voor je messages gebruiken...