2010-05-13 16 views
0

J'ai besoin d'appeler du code COM non géré à partir de C# .NET. En chargeant des bibliothèques de type COM non gérées à partir de (LoadTypeLibEx), je suis capable de parcourir tous les types exposés par COM TLB. J'ai besoin de connaître les adresses pour appeler ces méthodes exposées lors de l'exécution ou en accédant à l'adresse de début de COM vtable et appliquer l'indexation pour obtenir des adresses de ces méthodes exposées sous les interfaces.Comment faire pour appeler le code COM non géré au runtime à partir de C# .NET en utilisant ITypeLib et ITypeInfo?

+0

double possible de [Comment accéder à COM vtable et accéder à ses entrées de TLB (Type Library) en C#?] (http://stackoverflow.com/questions/2818418/how-to-access-com-vtable-and-acess-its-entries-from -tlbtype-library-in-c) –

+0

ouais parce que je n'ai pas eu la bonne solution de mon problème, j'ai rouvert le fil d'une autre bonne manière. – Usman

Répondre

0

Juste une suggestion:

Créer un serveur COM non managé proxy qui le fera pour vous, en utilisant uniquement ensemble fixe de méthodes, que d'utiliser ce service proxy de votre application C#

+0

Il serait assez difficile d'écrire des serveurs COM non gérés proxy. Je n'ai pas besoin d'aller pour la génération de code pour chaque EXE/DLL COM qui est un binaire non managé comme DLL/EXE. Tout ce dont j'ai besoin pour ENUMERER tous les types avec leurs méthodes exposées à l'exécution et au moment de l'exécution, j'ai besoin d'appeler des méthodes exposées en accédant à leurs adresses de vtable. Pas de génération de code – Usman

+0

juste un serveur com, mais avec la possibilité d'énumérer tous les types et méthodes pour la DLL demandée. suivre Énumérer les méthodes d'objet COM (IDispatch) en utilisant ATL? http://stackoverflow.com/questions/2112302/enumerate-com-object-idispatch-methods-using-atl – volody

+0

mon idée que vous pouvez faire cela avec du code non géré ce qui est possible, puis fournir cette informaion à C# client via COM interface – volody