2009-04-29 6 views
2

Verwendung habe ich ein ActiveX (3rd-Party, keine Quelle) mit einer Methode, die einen Referenzparameter wie folgt hat:einen Referenzparameter auf ActiveX über Javascript

HRESULT GetSomething(
[in] short param1, 
[out] BSTR* someString); 

In C++ können Sie es wie folgt ausführen würde:

BSTR someString = NULL 
m_activeX.GetSomething(0, &someString); 

Wie würde ich dies über Javascript ausführen? Alle anderen Funktionen im ActiveX funktionieren gut, aber diese sieht unmöglich aus? Wenn nicht in Javascipt möglich, ist es in VBScript? Ich hatte auch kein Glück.

BTW, Dies muss in Internet Explorer

Antwort

3

getan wird, kann ich Ihnen nicht eine definitive Antwort geben, aber ich glaube es nicht getan werden kann. Ich hoffe, jemand wird mir falsch beweisen, aber hier ist, warum ich denke, es kann nicht funktionieren ...

In Javascript werden alle Variablen nach Wert übergeben. In IE erstellen Sie eine Instanz der JavaScript-Klasse ActiveXObject, um Ihr COM-Objekt zu umbrechen. Selbst wenn dieses Wrapper-Objekt den Wert von Ihrem COM-Objekt erhalten könnte, gibt es in Javascript keine Möglichkeit, diesen Wert an Sie zurückzugeben.

Wenn Sie wissen, dass Sie im IE unter Windows ausgeführt werden, können Sie versuchen, vbscript anstelle von Javascript zu verwenden. Vbscript unterstützt Pass-by-Referenz, damit Sie mehr Glück damit haben können.

Ich hoffe, dass hilft.

0
// Using javascript 
var someString = activeXObj.GetSomething(0); 
+3

AFAIK, würde dies nur funktionieren, mit einem '[out, retval]' Parametern, nicht '[out]' (siehe [diese Frage] (http://stackoverflow.com/questions/1575818/differences- zwischen-in-out und out-retval-in-com-idl-Definitionen)) – Helen

Verwandte Themen