我正在尝试使用我自己的 ActiveX 控件在 Internet Explorer 中显示视频。
我创建了 ActiveX 控件和一个演示 HTML 页面,使用 OBJECT 标记创建控件(并在其上设置宽度/高度)。我可以通过javascript在这个控件上调用简单的方法,它可以工作。
我还创建了一个有效的 directshow 图表来显示视频。该图包含一个“增强型视频渲染器”(EVR) 渲染器过滤器。
但我被困住了:我找不到链接这两种技术的方法。一些 MSDN 文档说 EVR 应该使用 WindowLess 激活。但是这个激活需要一个 hWnd 和一个 hWnd 内的矩形。我的 ActiveX 托管在 Internet Explorer 中,如何获取 hWnd 并使渲染器在此窗口中以正确的位置/大小呈现?
请注意,我知道如何在 javascript 中获取对象的绝对矩形并将其提供给 ActiveX。但是这个矩形可能会随着滚动条移动?以及如何获得这个该死的 hWnd ?
编辑
似乎 ActiveX 需要实现 IOleInPlaceObjectWindowless 接口,该接口具有主机调用的 SetObjectRects 方法,并且应该向主机查询具有返回 hWnd 的 GetWindow 方法的 IOleWindow 接口。
编辑 2
似乎您所要做的就是实现 IComponent 来检索一个 ISite 主机接口,您可以在该接口上查询您需要的任何服务。