2010-02-04 4 views
0

J'ai un serveur COM, implémenté en C#. Il expose une classe décorée comme ceci:C# Accès au serveur COM à partir de JScript

[ComVisible(true)] 
[ProgId("MyServer.MyClass")] 
[ClassInterface(ClassInterfaceType.AutoDispatch)] 

J'ai enregistré la DLL avec "regasm/codebase MyServer". Ce serveur doit être utilisé à partir d'un WSC (un serveur COM implémenté en JScript). J'ai donc utilisé l'interface AutoDispatch.

Lorsque le WSC appelle

o = new ActiveXObject("MyServer.MyClass"); 

je reçois l'erreur « servent d'automatisation ne peut pas créer l'objet ».

j'ai vérifié l'enregistrement du serveur COM avec ce programme C++:

hr = ::CoInitialize(NULL); 
hr = ::CLSIDFromProgID(L"MyServer.MyClass", &clsid); 
hr = ::CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IDispatch, (void**)&pObj); 

et a pu créer l'objet. Toutes les valeurs de retour ont été vérifiées pour être S_OK. Qu'est-ce qui est nécessaire pour rendre le serveur COM accessible pour JScript?

+0

Le code JScript peut créer l'instance de l'ActiveXObject sous Windows XP (32 bits). Mais le même code échoue sur Windows 7 (64 bits). – harper

Répondre

0

Les types utilisés dans votre classe sont-ils ole automation compatible? Je ne sais pas si jscript vérifie la compatibilité oleautomation à l'avant.