Возврат байтового массива из ActiveX в JavaScript - PullRequest
0 голосов
/ 03 августа 2009

Я создал небольшой элемент управления ActiveX, используя c #. У меня есть функция, которая возвращает массив байтов. По какой-то причине, когда я пытаюсь использовать возвращенный массив в js, я получаю неопределенное значение. Почему это происходит? Есть ли способ ее решить?

Вот простая демонстрация моего кода:

Activex:

[ComVisible(true)]
        public byte[] Close()
        {
            try
            {
                MessageBox.Show("called from activex Close");
                return Stop();
            }
            catch (Exception e)
            {
                //ExceptionHandling.AppException(e);
                throw e;
            }
        }

Javascript Call:

function CloseActiveX(){
var myRslt = document.OurActiveX.Close();
}

1 Ответ

1 голос
/ 06 августа 2009

Вы не показали, что содержит метод Stop (). Если Stop() возвращает ноль, вы должны ожидать увидеть то, что видите.

Тем не менее, похоже, что ваш элемент управления ActiveX написан на .NET. Это плохая идея по бесчисленным причинам, и не в последнюю очередь такая производительность будет низкой, и вы столкнетесь с проблемами, если в браузере будут запущены другие элементы управления или расширения, которым нужна другая версия платформы.

Помимо этой проблемы, вероятная проблема заключается в том, что byte[] не направляется обратно вызывающей стороне таким образом, чтобы это позволяло его использовать. Вам нужно вернуть VARIANT со следующими свойствами: ARRAY, BYREF, U1.

Маршалинг по умолчанию для массивов может быть полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...