![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
|
Привет ! вобщем
имеем не замысловатый код на С++ 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, время: 19:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|