|
使用JavaScript中的OLE Automation
3. 怎樣創(chuàng)建Automation對象的新實例
Jscript(微軟版本的JavaScript)是一個寬松類型的語言。換句話說,變量不是明顯定義為指定的數(shù)據(jù)類型。你不能聲明一個變量為指定的對象類型,所以早綁定不可能在JScript中。Jscript的ActiveXObject()構(gòu)造函數(shù)通常用于為對象創(chuàng)建一個遲綁定界面:
var wdApp; // 一個普通變量
wdApp = new ActiveXObject("Word.Application");
Jscript不需要明顯的變量聲明,所以我們可以使用以下的代碼:
var wdApp = new ActiveXObject("Word.Application");
ActiveXObject()函數(shù)的一般的語法如下:
var objVar = new ActiveXObject(class[, servername]);
objVar指定為一個持有實例化對象引用的變量。class使用library.object語法,它是指應(yīng)用程序的名字(比如Word或者Excel等等)或者包含對象的庫,并且對象是要創(chuàng)建的對象類的類型。servername(這是一個可選的參數(shù))指定了包含對象的服務(wù)器的名字。
這個ActiveXObject()構(gòu)造函數(shù)創(chuàng)建了一個OLE Automation(ActiveX)對象的實例。一旦對象被創(chuàng)建了,你可以使用定義的對象變量來引用它。如果ActiveX對象的實例已經(jīng)運行,ActiveXObject()在它創(chuàng)建了必需的類型的對象的時候可能開始一個新的實例。下面的代碼段可以讓用戶直接打開一個Word文檔:
var pause = 0;
var wdDialogFileOpen = 80;
var wdApp = new ActiveXObject("Word.Application");
var dialog = wdApp.Dialogs(wdDialogFileOpen);
var button = dialog.Show(pause); 使用JavaScript中的OLE Automation
3. 怎樣創(chuàng)建Automation對象的新實例
前面的代碼段引用了Word.Application對象,它的方法在后面的教程要介紹。這里要注意等級結(jié)構(gòu),即一個方法或者屬性是一個對象,它們又又自己的方法和屬性。
象Visual Basic 6,Jscript可以通過增加一個新的參數(shù)(servername)來一步增加ActiveXObject函數(shù)。你可以在注冊的ActinveX對象上指定服務(wù)器的名字。在遠程服務(wù)器創(chuàng)建一個對象可以在Internet安全檢查程序關(guān)閉的時候完成。你可以通過傳遞計算機的名字給ActiveXObject()構(gòu)造函數(shù)的servername參數(shù)來在遠程網(wǎng)絡(luò)計算機上創(chuàng)建一個對象。比如,如果一個網(wǎng)絡(luò)共享命名為"\\MYSERVER\D\Program Files",那那么servername的數(shù)值就為’MYSERVER”。另外,你可以使用DNS格式或者一個IP地址來指定位置。下面的函數(shù)返回運行在遠程網(wǎng)絡(luò)計算機(名為"MYSERVER")Word的實例的版本號:
function getVersion() {
var wdApp = new ActiveXObject("Word.Application", "MYSERVER");
return wdApp.Version;
}
如果指定的遠程服務(wù)器不存在或者沒有找到就會產(chǎn)生一個錯誤。當我們測試這個函數(shù)的時候,我們可以發(fā)現(xiàn)Jscript忽視了servername參數(shù)。所以我們在VBScript將這些函數(shù)放在一起,可以發(fā)現(xiàn)它并不工作:
Function GetVersion
Dim wdApp
Set wdApp = CreateObject("Word.Application", "MYSERVER")
GetVersion = wdApp.Version
End Function
|