嵌入在asp页面中的flash播放器,在webbrowser控件中打开

时间:2010-05-01 09:13:55

标签: .net winforms webbrowser-control flash

我正在使用C#.NET开发一个Windows应用程序。在我的一个winform中,我添加了一个WebBrowser控件。在这个webbrowser控件中,我已经从我的本地网站打开了一个asp页面。现在在这个网页中有一个用于播放swf文件的flash对象。 现在我的问题是我可以从winform访问此控件吗?如果是这样呢?你可以为那个flash对象创建一个处理程序吗?

1 个答案:

答案 0 :(得分:2)

您可以通过IHTMLObjectElement :: object方法从元素访问ActiveX的脚本编写接口。在microsoft.public.inetsdk.programming.webbrowser_ctl新闻组中搜索IShockwaveFlash以获取更多相关信息。

如果您使用的是Windows窗体,则会通过HtmlElement.DomElement公开html元素的界面。您可以添加对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);
        }
    }   
}