2009-01-07 8 views
4

J'utilise une application tierce et lance un appel pour créer une instance de mon objet COM. Cet appel réussit, mais la fonction sur l'application tierce pas renvoie un pointeur vers l'objet créé (je ne sais pas pourquoi). Est-il possible d'obtenir un pointeur sur mon objet?Pointeur vers l'objet COM lorsque l'application ne le renvoie pas

Pour clarifier, voici quelques pseudo-code:

// This function has no return value! 
ThirdPartyApp.CreateObject("MyObject"); 
+0

Qu'est-ce que la bibliothèque tierce appelée? – willcodejavaforfood

+0

Dans quelle langue programmez-vous? –

+0

Incidemment, comment cette autre application obtient-elle une référence à votre objet? Je veux dire, pourquoi le crée-t-il s'il ne peut pas l'utiliser? –

Répondre

2

Lorsque votre objet est créé, faire stocker une référence à lui-même dans une variable globale ou une autre sorte de lieu de stockage partageable. Puis exportez une fonction de votre DLL COM qui lira à partir de cet emplacement afin que vous puissiez l'appeler et obtenir une référence à l'objet précédemment créé.

Cette référence partagée doit pas augmenter le nombre de références de l'objet, sinon il ne sera jamais détruit. Lorsque votre objet est détruit, assurez-vous d'effacer cette référence partagée.

Si vous pouvez avoir plusieurs instances de cet objet dans le même processus, vous devrez peut-être gérer une liste au lieu d'une seule variable globale.

0
  1. Stockez votre valeur de retour HRESULT (est-ce C++?), Cela peut donner un indice.
  2. Parfois, il y a des problèmes de montage/création difficiles si vous appelez un objet de type usine qui existe dans un autre appartement.
Questions connexes