在我的ActiveX中,会动态产生Flash控件,用来显示Flash文件,并且重写了_IShockwaveFlashEvents的Invoke函数,在VC中做过测试,可以收到FSCommand事件,但是在IE中,Flash文件能正常的显示出来,在网页刚加载的时候,Invoke函数会被调用,说明事件已经连接上了,但是点击Flash上的按钮,却收不到FSCommand事件。但是用360浏览器,就可以收到FSCommand事件,同样是IE的内核,也试过降低IE的安全设置,都没用。
但是发现一个网站上,在IE中实现了这个功能,就是在ActiveX控件里嵌入Flash动画,并且在网页里的JS里响应Flash中的FSCommand事件。我觉得他这个是ActiveX先接收了Flash的FSCommand事件,然后调用相应的JS脚本,去控制ActiveX本身的行为。
这个已经是老问题了,我搜了很多资料,很多人都有这个问题,但是都没发现一个解决的办法。
救命吧

解决方案 »

  1.   

    本来不想发那个实现IE下ActiveX和Flash通信的网址的。。怕有人说我是发广告的。。
    但是刚才用Spy++看了下他的网页,在网页里查找窗口句柄时,只有一个ActiveX控件的窗口句柄,也就是说,他的Flash是直接绘制在ActiveX控件上的,而不是使用的Flash的控件,因为我的目前是动态生成一个Flash控件去显示,Spy++能看到这个Flash控件的窗口句柄。
    那个网址是http://www.sun3d.com/case/huxing/demo.htm是他们公司的一个Demo页面,要安装ActiveX控件的。
    求解
      

  2.   

    看了下,你那个地址一开始是flash窗口,然后进去里面之后,就是一个对话框窗口,没看到有什么flash控件
      

  3.   

    但是你看那个地址里的源码,是加载了两个flash动画在 对话框窗口 上的,
    VGS2.AddFlashGui("top", "topflash.swf","",  1, 0, 0, 920, 400, 0);//顶
    VGS2.AddFlashGui("below", "belowflash.swf","",  7, 0, 0, 920, 320, 0);//底然后提出出来,就是
    http://www.sun3d.com/case/huxing/topflash.swf

    http://www.sun3d.com/case/huxing/belowflash.swf
      

  4.   

    哎,好像没人在搞ActiveX了
    还是经理牛X,找到办法了。CComPtr<IOleObject> spOleObject;
    m_pFlash->QueryInterface(__uuidof(IOleObject), (void**)&spOleObject);
    if (spOleObject)
    {
    hr = spOleObject->SetClientSite(m_spClientSite);
    }