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

是否可以将 JavaScript 事件处理程序分配给 Active X 控件中的按钮,以便在单击时在页面上触发操作,或者我们是否必须在 html 页面本身上创建一个按钮来操作 Active X 控件并那么可以在页面上触发任何必要的操作吗?

有帮助吗?

解决方案

只需使用现有的 ActiveX 控件。例如 Flash 或 Silverlight。Flash 具有内置网络摄像头支持,并且可通过 JavaScript 进行控制。Silverlight 没有内置相机支持,但它的 JavaScript 集成非常棒。

如果您必须自己编写,那么不用担心,让它与 JavaScript 交互是很简单的。你只需要暴露 IDispatch 界面。

对于活动,您需要了解 连接点.

其他提示

是的!您可以在 C++/ActiveX 领域中抛出事件,这使得 JavaScript 代码运行事件处理函数。我什至能够制作一个完整的不可见 ActiveX 控件(与页面背景颜色相同),没有按钮或视觉反馈,通过 JavaScript 和 CSS 完成其所有 GUI 工作。

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

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

(此外,我确保在 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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top