ActiveXObject 对象
启用并返回 Automation 对象的引用。newObj = new ActiveXObject(servername.typename[, location])ActiveXObject 对象语法有这些部分:参数
newObj必选项。要赋值为 ActiveXObject 的变量名。servername必选项。提供该对象的应用程序的名称。typename必选项。要创建的对象的类型或类。location可选项。创建该对象的网络服务器的名称。说明
Automation 服务器至少提供一类对象。例如,字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。要创建 Automation 对象,将新的 ActiveXObject 赋给对象变量: var ExcelSheet;
ExcelApp = new ActiveXObject("Excel.Application");
ExcelSheet = new ActiveXObject("Excel.Sheet");
本代码启动创建对象的应用程序(在这种情况下,Microsoft Excel 工作表)。一旦对象被创建,就可以用定义的对象变量在代码中引用它。 在下面的例子中,通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells 集合。 // 使 Excel 通过 Application 对象可见。
ExcelSheet.Application.Visible = true;
// 将一些文本放置到表格的第一格中。
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
// 保存表格。
ExcelSheet.SaveAs("C:\\TEST.XLS");
// 用 Application 对象用 Quit 方法关闭 Excel。
ExcelSheet.Application.Quit();
只有当 Internet 安全性关闭时才能完成在远程服务器中创建对象。要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObject 的 servername 参数。该名称与共享名的机器名部分相同。比如共享名为 "\\myserver\public" 的网络,servername 是 "myserver"。另外,可以用 DNS 格式或 IP 地址指定 servername。下面的代码返回在名为 "myserver" 的远程网络计算机上运行的 Excel 实例的版本号:function GetAppVersion() {
   var XLApp = new ActiveXObject("Excel.Application", "MyServer");
   return(XLApp.Version);
}
如果指定的远程服务器不存在或找不到时将发生错误。 

解决方案 »

  1.   

    IE下的COM可对了,FileSystemObject,Stream,Command...都是用new ActiveXObject来创建的
      

  2.   

    我的意思是随便用VC写个COM,就可以在IE中掉用了嘛?有没有什么特别的需求?
      

  3.   

    atl创建的才可以。
    调用方法一样。
      

  4.   

    问下楼上的,ATL创建的COM和C++写的COM有什么区别嘛?
      

  5.   

    ATL is the Active Template Library, a set of template-based C++ classes with which you can easily create small, fast Component Object Model (COM) objects. It has special support for key COM features including: stock implementations ofIUnknown,IClassFactory,IClassFactory2 andIDispatch; dual interfaces; standard COM enumerator interfaces; connection points; tear-off interfaces; and ActiveX controls.ATL code can be used to create single-threaded objects, apartment-model objects, free-threaded model objects, or both free-threaded and apartment-model objects.
      

  6.   

    楼上的,我使用ATL写了一个最简单的COM对象,双接口,可是在脚本中报错。// script
    var mm = new ActiveXObject("Math");// idl
    [
    object,
    uuid(A8124E10-EBE5-48FE-B1F0-123C0D310C66),
    dual,
    helpstring("IMath Interface"),
    pointer_default(unique)
    ]
    interface IMath : IDispatch
    {
    [id(1), helpstring("method Add")] HRESULT Add( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(2), helpstring("method Sub")] HRESULT Sub( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(3), helpstring("method Mul")] HRESULT Mul( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(4), helpstring("method Div")] HRESULT Div( [in] VARIANT vOpt1, [in] VARIANT vOpt2, [out, retval] VARIANT *pvResult );
    };错误提示:automation server can't create the object.不知道是什么原因。
      

  7.   

    Programming Microsoft Internet Explorer 5你一页是讲 atl 开发 activex 的,你可以参考一下.
      

  8.   

    我用的是new ActiveXObject可是报错。automation server can't create the object.是不是一定要是个activex?应该不对啊。MSDN上说中需要是个automation对象即可。
      

  9.   

    上面已经贴了啊。就是用ATL wizard作了一个dll,添加了几个方法。// idl
    [
    object,
    uuid(A8124E10-EBE5-48FE-B1F0-123C0D310C66),
    dual,
    helpstring("IMath Interface"),
    pointer_default(unique)
    ]
    interface IMath : IDispatch
    {
    [id(1), helpstring("method Add")] HRESULT Add( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(2), helpstring("method Sub")] HRESULT Sub( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(3), helpstring("method Mul")] HRESULT Mul( [in] VARIANT vOp1, [in] VARIANT vOp2, [out, retval] VARIANT *pvResult );
    [id(4), helpstring("method Div")] HRESULT Div( [in] VARIANT vOpt1, [in] VARIANT vOpt2, [out, retval] VARIANT *pvResult );
    };// script
    var mm = new ActiveXObject("Math");
      

  10.   

    你的浏览器权限是否打开具体例子你可以看vs 6.0 带的 msdn 关键字 ATL Tutorial
      

  11.   

    我看了ATL tutorial,那上面说的是一个Atl control,而我仅仅想做一个atl object,支持自动化。