Active X控件JavaScript

时间:2020-03-05 18:42:55  来源:igfitidea点击:

我和我的同事遇到了一个令人讨厌的情况,我们必须使用活动的X控件来操纵页面上的网络摄像头。

是否可以将JavaScript事件处理程序分配给活动x控件中的按钮,以使其在单击时在页面上触发操作,还是我们必须在html页面本身上创建一个按钮来操纵Active X控件并然后可以在页面上执行任何必要的操作?

解决方案

回答

是的!我们可以在C ++ / ActiveX领域中引发事件,这使JavaScript代码运行事件处理程序功能。我什至可以制作一个完全不可见的ActiveX控件(与页面背景颜色相同),而没有按钮或者视觉反馈,该控件的所有GUI都通过JavaScript和CSS起作用。

编辑:弗兰克的建议是正确的。这是脚本事件的链接。

我的策略是要在浏览器中强制进行更新时调用一个名为MyUpdate的C ++函数(该实现IConnectionPoint)。

(此外,我确保在Fire_MyUpdate方法中泵送Windows消息,因为有时JavaScript代码会通过调用ActiveX控件上的方法而回调回C ++领域;这避免了冻结浏览器并确保JavaScript GUI保持响应状态,例如对于取消按钮。)

在浏览器端,JavaScript代码具有引用对象的全局变量,后跟" ::",后跟方法名称:

function Uploader::MyUpdate()
{
    // ... code to fetch the current state of various
    // properties from the Uploader object and do something with it
    // for example check Uploader.IsActive and show or hide an HTML div
}

回答

请仅使用现有的ActiveX控件。像Flash或者Silverlight。 Flash具有内置的网络摄像头支持,并且可以通过JavaScript进行控制。 Silverlight没有内置的相机支持,但是它的JavaScript集成很棒。

如果我们必须编写自己的代码,则不必烦恼,让它与JavaScript交互很简单。我们只需要公开IDispatch接口。

对于事件,我们需要了解连接点。