Flash Player встроен в ASP страницу, которая открывается в веб-браузере - PullRequest
0 голосов
/ 01 мая 2010

Я занимаюсь разработкой приложения для Windows на C # .NET. В одной из моих winform я добавил элемент управления WebBrowser. В этом веб-браузере я открыл страницу asp с моего локального веб-сайта. Теперь на этой веб-странице есть один Flash-объект, который используется для воспроизведения SWF-файлов. Теперь мой вопрос: могу ли я получить доступ к этому элементу управления из моей winform? Если так то как? Вы можете создать обработчик для этого флэш-объекта?

1 Ответ

2 голосов
/ 04 мая 2010

Вы можете получить доступ к интерфейсу сценариев ActiveX из элемента через метод IHTMLObjectElement :: object. Ищите IShockwaveFlash в группе новостей microsoft.public.inetsdk.programming.webbrowser_ctl для получения дополнительной информации об этом.

Если вы используете Windows Forms, интерфейс html-элемента предоставляется через HtmlElement.DomElement . Вы можете добавить ссылку на microsoft.mshtml и привести DomElement к IHTMLObjectElement, затем получить его свойство объекта и привести к IShockwaveFlash.

В ATL код выглядит так

#import   "flash.dll"   raw_interfaces_only

CComPtr<IDispatch>   htmlElement;   
CComPtr<IDispatch>   activeXObject;       
hr   =   GetElement(elementIdString,   &htmlElement);   
if   (htmlElement!= NULL)   
{   
    CComQIPtr<IHTMLObjectElement>   htmlObjectElement(htmlElement);
    if   (htmlObjectElement!= NULL)   
    {    
        htmlObjectElement->get_object(&activeXObject);   
        CComQIPtr<ShockwaveFlashObjects::IShockwaveFlash,   &IID_IUnknown>   flashViewer(spdispActiveXObject);     
        if(flashViewer!=NULL)
        {
            //do something on the flash
            CComBSTR movie;
            flashViewer->get_Movie(&movie);
        }
    }   
}   
...