Метод объекта ActiveX имеет эту подпись.
long DirectIO(long Command, long* pData, BSTR* pString) Int32 DirectIO(Int32, Int32 ByRef, System.String ByRef)
Я пытаюсь вызвать этот метод из JavaScript. Я пробовал много комбинаций, но всегда получаю ошибку «Несоответствие типов».
Справочные ссылки:
Ошибка VBScript "Несоответствие типов" с параметром "[in, out] BSTR *"
https://developer.mozilla.org/en/Working_with_out_parameters
Так почему же VBScript выдает здесь ошибку несоответствия типов? VBScript нет! Объект выдает ошибку несоответствия типов, которая VBScript покорно сообщает. Реализация объекта Invoke вызывает стандартная реализация Invoke, предоставляемая вам библиотекой типов реализация. Эта вещь говорит "У меня есть ссылка на вариант, и этот вариант является строкой. Мне нужна ссылка на строку. Это несоответствие типов. "
Учитывая все ссылки, которые я поставил в этом вопросе, текущий вывод состоит в том, что невозможно вызвать эту функцию непосредственно из Javascript.
Однако возможен альтернативный метод (COM-прокси / оболочка).