|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
|
ExternalInterface && C++ flash->CallFunction Crash (((
Привет ! вобщем
имеем не замысловатый код на С++ static Flash::IShockwaveFlash*flash; if(FAILED(CoCreateInstance(__uuidof(Flash::ShockwaveFlash), NULL, CLSCTX_ALL, __uuidof(Flash::IShockwaveFlash), (void**)&flash))){ return; } if(FAILED(AtlAxAttachControl(flash, toolbarHandle, NULL))){ flash->Release(); return; }else{ flash->LoadMovie(0, "C:\test.swf"); } flash->DisableLocalSecurity(); происходит RTE в С++, если код вешать в тру кэтч и смотреть описание ошибки, то MS как обычно на высоте - "произошла не известная ошибка" Может чего забыл ? кто в теме посоветуйте, во флеше есть ExternalInterface.addCallback("test",testHandler);, но мне кажется ( могу ошибаться ) просто попытка вызова метода на стороне флеша не должна выбивать RTE у С++ стороны PS info: - сама флешка написана на AS3 - код подписи на коллбэк лежит в обработчике ADDED_ON_STAGE - кроме этого в коде не чего нету ( ну только обработчик этого коллбэка ) - сам проект - Plugin к IE, то есть это ATL DLL - сама флешка нормально крутиться - если вызывать ИЗ флеша ExternalInterface.call, все работает ! ( конечно кода для этого на стороне С++ требуется куда больше, но суть в том, что работает ! ) - как я понял setVariable на AS3 проектах не работает ? ( прочитал древний пост от etc ) проблему, конечно, можно решить написав на стороне флеша ExternalInterface.call("getMessage",peekMessage);, повесить в таймер, например срабатывающий каждую секунду, а на стороне С++ при вызове getMessage отдавать список сообщений, которые должен обработать флеш но это криво PSS2 если не туда запостил, поправьте, по описанию я незнаю какой раздел подходит..., по логике наверно этот, так как сама флешка на as3 Последний раз редактировалось easy.proger; 29.12.2010 в 07:40. |
|
|||||
listener
|
Цитата:
Я делал так: m_spPlayer->CallFunction((_bstr_t("<invoke name=\"newfunc\" returntype=\"xml\"><arguments><string>bl-bla</string></arguments></invoke>")); _bstr_t в comutil.h если что. |
|
|||||
Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
|
все так же RTE ((( видимо IE плохо дружит с таким обращением (((
|
|
|||||
[+1 09.03.11]
Регистрация: Mar 2010
Сообщений: 128
|
не стал создавать тему,
у меня похожи вопрос. Как на c# передать через com, флешки массив байт? желательно не при помощи tcp.
__________________
for(;;); |
|
|||||
listener
|
ExternalInterface сериализует данные в XML, т.е. по-сути в обычную строку. Соответственно, десериализует тоже только из XML. Упаковать бинарные данные в строку можно разными способами, зачастую используют base64.
Т.е. на стороне c# пакуем bytearray->base64, сериализуем полученную строку в XML, согласно формату ExternalInterface, отдаем. Во флеше вынимаем строку, делаем обратное преобразование base64->bytearray. Как то так. Благо либы АС3 для работы с base64 имеются. Обратно из флэша в c# процедура передачи bytearray повторяется. ... И вообще, ваш вопрос практически не соотносится с темой топика. Нужно было создать отдельный топ. Последний раз редактировалось alexcon314; 11.01.2011 в 10:00. |
Часовой пояс GMT +4, время: 13:25. |
|
« Предыдущая тема | Следующая тема » |
|
|