ActiveXObject 对象

12年前
一.什么是 ActiveX 控件?

ActiveX 控件广泛用于 Internet。它们可以通过提供视频、动画内容等来增加浏览的乐趣。不过,这些程序可能出问题或者向您提供不需要的内容。在某些情况下,这些程序可被用来以您不允许的方式从计算机收集信息、破坏您的计算机上的数据、在未经您同意的情况下在您的计算机上安装软件或者允许他人远程控制您的计算机。考虑到这些风险,您应该在完全信任发行商的情况下才安装这些程序。

当 Windows 阻止 ActiveX 控件的安装时,您应该做什么?

您可能不应该安装该 ActiveX 控件。安装 Windows 阻止的 ActiveX 控件是极为冒险的事情。如果 Internet Explorer 安全设置处于默认级别,并且 ActiveX 控件没有有效的数字签名,Windows 就会阻止该 ActiveX 控件的安装。

有效的数字签名可确认发行商的标识(分发文件的公司、网站或个人),并确认文件自签名以后没有被篡改过这一事实。如果文件没有有效的数字签名,您就无法确定文件是否真的来自它所声明的来源,或者它是否没有被篡改过(例如,可能会有病毒插入控件中)。除非您信任发行商,并且知道文件打开后内容会是安全的,否则,就不应该打开文件。


ActiveXObject对象使用说明:

JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用。使用方法:
newObj = new ActiveXObject( servername.typename[, location])
ActiveXObject 对象语法有这些部分:
其中newObj是必选项。要赋值为 ActiveXObject 的变量名。
servername是必选项。提供该对象的应用程序的名称。
typename是必选项。要创建的对象的类型或类。
location是可选项。创建该对象的网络服务器的名称。
Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。


例如要创建Excel的Application和Sheet对象,代码如下:

var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet")


一旦对象被创建,就可以用定义的对象变量在代码中的引用它。下面我们将通过一个例子来看看对对象和方法的引用,通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells 集合。代码如下:

1 ExcelSheet.Application.Visible = true;
2 ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
3 ExcelSheet.SaveAs("C:\\TEST.XLS");
4 ExcelSheet.Application.Quit();


下面我们来看看怎样创建远程服务器中创建对象,但是这有一个前提就是要将Internet安全性关闭。要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObject 的 servername 参数。该名称与共享名的机器名部分相同。比如共享名为 "\\myserver\public" 的网络,servername 是 "myserver"。另外,可以用 DNS 格式或 IP 地址指定 servername。下面的代码返回在名为 "myserver" 的远程网络计算机上运行的 Excel 实例的版本号:

1 function GetAppVersion() {
2 var XLApp = new ActiveXObject("Excel.Application", "MyServer");
3 return(XLApp.Version);
4 }

如果指定的远程服务器不存在或找不到时将会发生错误。(引自:http://yinshangshu.blog.163.com/blog/static/122636156201023702650/)

二.ActivXObject 在JS中创建FileSystemObject操作文件 实例:


js中利用ActiveXObject来创建FileSystemObject操作文件

1,功能实现的核心
要在js中实现文件操作功能,主要就是依靠FileSystemObject对象了。

2,FileSystemObject编程
使用FileSystemObject对象进行编程很简单,一般要经过如下的步骤:创建

FileSystemObject对象,应用相关的方法,访问相关的属性。FileSystemObject的api请

参考http://msdn.microsoft.com/en-us/library/z9ty6h50%28VS.85%29.aspx官方说明。

下面就用例子进行说明:
1,创建FileSystemObject对象
var fso = new ActiveXObject("Scripting.FileSystemObject");

操作文件(txt)
一,创建文件
一共有3种方法可用于创建一个空文本文件,这种文件有时候也叫做文本流(text stream)
1,使用createTextFile方法
var fso = new ActiveXObject("Scripting.FileSystemObject");
var createFile = fso.createTextFile("c:\\testFile.txt",true);
true表示是否可以重写已经存在的文件。

2,使用openTextFile方法,并添加ForWriting属性
var fso = new ActiveXObject("Scripting.FileSystemObject");
var openfile = fso.openTextFile("c:\\test.txt",2,true);

ForReading 1 只读的形式打开文件
ForWriting 2 可以写入打开的文件,重新写入,不会接着写
ForAppending 8 在文件的末尾接着写入
true表示如果没有该文件,则创建该文件。

3,使用openAsTextStream方法,同样要设置ForWriting属性
var ForWriting = 2;
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.createTextFile("C:\\test.txt");
var file = fso.getFile("C:\\test.txt");
var openfile = file.openAsTextStream(ForWriting,true);

二,添加数据到文件中
当文件被创建后,一般要按照打开文件-填写数据-关闭文件的步骤实现添加数据到文件的

目的。打开文件可使用FileSystemObject对象的openTextFile方法,或者使用

FileSystemObject对象的openAsSTextStream方法。填写数据使用到FOS的write,

writeLine,writeBlankLines方法。三者的区别在于,write方法不在写入数据末尾添加新

换行符,writeLine方法要在最后添加一个新换行符,writeBlankLines则增加一个或者多

个空行。

var fso = new ActiveXObject("Scripting.FileSystemObject");
//创建新文件
var writeFile = fso.createTextFile("c:\\test.txt",true);true是否可以覆盖文件
writeFile.write("write string without wrap");
writeFile.close();

三,读取文件内容
从文本中读取数据要使用FOS对象的read,readLine或readAll方法。read方法用于读取文

件中指定数量的字符,readLine方法读取一整行,但不包括换行符,readAll方法则读取

文本文件的整个内容。读取的内容存放于字符串变量中,用于显示、分析。在使用read或

readLine方法读取文件内容时,如果要跳过一些部分,就要用到skip或skipLine方法。

var ForReading = 1;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.createTextFile("C:\\test.txt",true);
file.write("Hello ActiveX");
file.close();

var openfile = fso.OpenTextFile("C:\\test.txt",ForReading);
var content = openfile.readLine();
alert(content);
openfile.close();

四,移动、拷贝和删除文件
对于移动,拷贝,删除这三种文件操作,js各有两种对应的方法:File.move()或

FileSystemObject.moveFile用于移动文件;File.copy或FileSystemObject.copyFile用

于拷贝文件;File.delete或FileSystemObject.deleteFile用于删除文件。

var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.createTextFile("c:\\test.txt",true);
file.write("Hello ActiveX");
file.close();
var file1 = fso.getFile("c:\\test.txt");
file1.move("c:\\tmp\\test.txt");
file1.copy("c:\\temp\\test.txt");
file1 = fso.getFile("c:\\tmp\\test.txt");
file2 = fso.getFile("c:\\temp\\test.txt");
file2.delete();
file3.delete();

 更多内容请参考官方说明:
http://msdn.microsoft.com/en-us/library/z9ty6h50%28VS.85%29.aspx

http://msdn.microsoft.com/zh-cn/library/6958xykx(VS.80).aspx