ActiveXObject 對象

zhou__18 12年前發布 | 2K 次閱讀 專家 Yosemite

一.什么是 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

 本文由用戶 zhou__18 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!