ActiveX詳解

什麼是 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 }


如果指定的遠程服務器不存在或找不到時將會發生錯誤。
javascript取得機器名,用戶名,讀寫註冊表,啓動應用程序     
//javascript有個特殊的對象ActiveXObject,通過它可以訪問windows的本地文件系統和應用程序,     
比如:有的時候我們需要得到用戶的機器名,用戶名,得到某個文件的信息,或者讀寫註冊表,或者啓動計算器、outlook等應用程序。     
    
下面是一些常用的方法,每個都經過了測試。     
<script language="JavaScript">     
//取得機器名,登錄域及登錄用戶名     
function getusername()     
{     
var WshNetwork = new ActiveXObject("WScript.Network");     
alert("Domain = " + WshNetwork.UserDomain);     
alert("Computer Name = " + WshNetwork.ComputerName);     
alert("User Name = " + WshNetwork.UserName);     
}     
    
//取得系統目錄     
function getprocessnum()     
{     
        var pnsys=new ActiveXObject("WScript.shell");     
        pn=pnsys.Environment("PROCESS");     
        alert(pn("WINDIR"));     
}     
//返回系統中特殊目錄的路徑     
function getspecialfolder()     
{     
    var mygetfolder=new ActiveXObject("WScript.shell");     
    if(mygetfolder.SpecialFolders("Fonts")!=null)     
    {     
        alert(mygetfolder.SpecialFolders("Fonts"));     
     }     
}     
//取得磁盤信息 傳入參數如:getdiskinfo('c')     
function getdiskinfo(para)     
{     
    var fs=new ActiveXObject("scripting.filesystemobject");     
    d=fs.GetDrive(para);     
    s="卷標:" + d.VolumnName;     
    s+="------" + "剩餘空間:" + d.FreeSpace/1024/1024 + "M";     
    s+="------" + "磁盤序列號:" + d.serialnumber;     
    alert(s)     
}     
//取得系統目錄     
function getprocessnum()     
{     
        var pnsys=new ActiveXObject("WScript.shell");     
        pn=pnsys.Environment("PROCESS");     
        alert(pn("WINDIR"));     
}     
//啓動計算器     
function runcalc()     
{     
    var calc=new ActiveXObject("WScript.shell");     
    calc.Run("calc");     
}     
//讀取註冊表中的值     
function readreg()     
{     
    var myreadreg=new ActiveXObject("WScript.shell");     
    try{     
        alert(myreadreg.RegRead             ("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\NeroCheck"));     
     }     
    catch(e)     
    {     
        alert("讀取的值不存在!");     
     }     
}     
//寫註冊表     
function writereg()     
{     
    var mywritereg=new ActiveXObject("WScript.shell");     
    try{     
        mywritereg.RegWrite("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest","c:\\mytest.exe");     
        alert("寫入成功!");     
     }     
    catch(e)     
    {     
        alert("寫入路徑不正確!");     
     }     
}     
//刪除註冊表     
function delreg()     
{     
    var mydelreg=new ActiveXObject("WScript.shell");     
    if(confirm("是否真的刪除?"))     
    {     
        try{     
    mydelreg.RegDelete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest");     
    alert("刪除成功!");     
}     
catch(e)     
{     
    alert("刪除路徑不正確");     
}     
     }     
}     
//取得文件信息    調用方式如:getfileinfo('c:\\test.pdf')     
function getfileinfo(para)     
{     
    var myfile=new ActiveXObject("scripting.filesystemobject");     
    var fi=myfile.GetFile(para);     
    alert("文件類型:"+fi.type+"文件大小:"+fi.size/1024/1024+"M"+"最後一次訪問時間:"+fi.DateLastAccessed);     
}     
//取得客戶端的信息     
function clientInfo()     
{     
    strClientInfo="availHeight=      "+window.screen.availHeight+"\n"+     
"availWidth=      "+window.screen.availWidth+"\n"+     
"bufferDepth=      "+window.screen.bufferDepth+"\n"+     
"colorDepth=      "+window.screen.colorDepth+"\n"+     
"colorEnable=      "+window.navigator.cookieEnabled+"\n"+     
"cpuClass=      "+window.navigator.cpuClass+"\n"+     
"height=      "+window.screen.height+"\n"+     
"javaEnable=      "+window.navigator.javaEnabled()+"\n"+     
"platform=      "+window.navigator.platform+"\n"+     
"systemLanguage=      "+window.navigator.systemLanguage+"\n"+     
"userLanguage=      "+window.navigator.userLanguage+"\n"+     
"width=      "+window.screen.width;     
    alert(strClientInfo);        
}     
    
</script>     
    
//另存爲excel文件並寫入值     
function saveas(){     
var ExcelApp = new ActiveXObject("Excel.Application");     
var ExcelSheet = new ActiveXObject("Excel.Sheet")     
 ExcelSheet.Application.Visible = true;     
 ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";     
 ExcelSheet.SaveAs("C:\\TEST.XLS");     
 ExcelSheet.Application.Quit();     
 alert('ok');     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章