1.向ActiveX注册JS函数:
在ActiveX中添加接口方法 - void RegisterFunction(BSTR bstrFuncName, IDispatch* dispFunc)
JavaScript代码声明一个函数,并调用RegisterFunction接口向ActiveX注册该函数,供ActiveX调用。
2.保存注册的函数,ActiveX使用CComDispatchDriver对象保存注册的JS函数(IDispatch接口指针)
CComDispatchDriver m_Func1
void RegisterFunction(BSTR bstrFuncName, IDispatch* dispFunc)
{
if (bstrFuncName == "1")
m_Func1 = dispFunc
}
3.调用注册的函数,ActiveX使用CComDispatchDriver::InvokeN函数调用注册的函数
以下是对接受一个无符号整型参数的JS函数的调用:
VARIANT varArg[1]
varArg[0].vt = VT_UINTvarArg[0].uintVal = 1
try{
m_Func1.InvokeN((DISPID)DISPID_VALUE, varArg, 1)
}
catch(...){}
4.注意,对JS函数的调用必须在ActiveX程序的主线程中执行!
单击“开始”,指向“设置”,单击“控制面板”,双击“添加/删除程序”,然后单击“安装/卸载”选项卡。 2. 如果您要删除的 ActiveX 控件出现在安装的程序列表中,请单击该 ActiveX 控件,单击“添加/删除”,然后按照屏幕上的说明操作。如果该 ActiveX 控件没有出现在安装的程序列表中,则继续执行下一步。 3. 单击“开始”,单击“运行”,在“打开”框中键入下列行,然后单击“确定”: regsvr32 drive:\windows\occache\filename.ocx /u 注意:drive 是 Windows 文件夹所在的驱动器号,windows 是安装 Windows 的文件夹名,而 filename.ocx 是您想要删除的 ActiveX 控件。 注意:如果您不知道要删除的 ActiveX 控件 (.ocx) 的文件名,则可以通过查看安装或使用 ActiveX 控件的 Web 页的超文本标记语言 (HTML) 源文件来确定该文件名。若要查看一个 Web 页的 HTML 源文件,请右击该 Web 页的空白区域,然后单击“查看源文件”。 4. 在 Windows 资源管理器或 Windows NT 资源管理器中,单击 Windows\Occache 文件夹中的 .ocx 文件,然后单击“文件”菜单上的“删除”。 Occache 是在 Internet Explorer 3.x 的所有版本中安装有 ActiveX 控件的文件夹的名称。Regsvr32.exe 文件是由 Internet Explorer 安装的,并且可用于注册和删除 ActiveX 控件的注册表项。 Internet Explorer 4.x 或更高版本(所有平台) Internet Explorer 4.x 或更高版本,包括 Occache.dll 文件,该文件可用于使用“shell 文件夹”枚举、更新和安全地卸载 ActiveX 控件。 1. 单击“开始”,指向“设置”,单击“控制面板”,双击“添加/删除程序”,然后单击“安装/卸载”选项卡。 2. 如果您要删除的 ActiveX 控件出现在安装的程序列表中,请单击该 ActiveX 控件,单击“添加/删除”,然后按照屏幕上的说明操作。如果该 ActiveX 控件没有出现在安装的程序列表中,则继续执行下一步。 3. 在 Windows 资源管理器或 Windows NT 资源管理器中,双击 Windows\Downloaded Program Files 文件夹或 Winnt\Downloaded Program Files 文件夹,右击您想要删除的 ActiveX 控件,然后单击“删除”。 4. 在系统提示您是否删除该 ActiveX 控件后,单击“是”。 重要说明:如果您正运行 Internet Explorer 4.0,则不应删除以下 ActiveX 控件: ?? DirectAnimation Java Classes ?? Internet Explorer Classes for Java ?? Microsoft XML Parser for Java ?? Win32 Classes Internet Explorer 5.0 或更高版本不要求 Downloaded Program Files 文件中的这些组件。 删除 ActiveX 控件时出现的错误信息 在您尝试使用 Occache shell 文件夹删除一个 ActiveX 控件时,可能显示以下错误信息之一: ?? Share Violation These program files are currently being used by one or more programs.Please close some programs, and try again.You may need to restart Windows. ?? Component Removal About to remove a Windows system DLL:(<path\filename).Okay to delete?共享冲突:如果您正要删除的 ActiveX 控件当前在内存中由 Internet Explorer 或“活动桌面”组件加载,则显示此错误信息。 若要解决此错误信息,请按照下列步骤操作: 1. 关闭所有打开的 Internet Explorer 窗口。 2. 禁用“活动桌面”。为此,请右击桌面上的空白区域,指向 Active Desktop,然后单击“按 Web 页查看”以清除该复选标记。 3. 按照本文中前面部分的“Internet Explorer 4.0 或更高版本”部分中介绍的步骤,删除该 ActiveX 控件。 注意:您最好在删除 ActiveX 控件前重新启动 Windows。 组件删除:当您要删除的 ActiveX 控件向已注册的 Occache 文件夹以外的文件夹(例如,Windows\System 或 Winnt\System32)安装文件时,该信息只出现在 4.01 Service Pack 1 (SP1) 之前的 Internet Explorer 4 版本中。Occache 不是总能确定这些文件是否正由其程序共享。 如果您确定消息中显示的一个或多个文件未由 Windows 或其他程序使用,请单击“是”。否则,单击“否”。if (window.ActiveXObject) {alert("已安装!")
} else {
alert("ActiveX未安装!")
}
不知道楼主为什么要用ActiveXObject,
ActiveXObject从IE6开始就支持,但是也仅仅只有IE支持,其他浏览器不支持,会造成不兼容的!