2506js,活扩控件
ActiveXObject
对象
js
有个特殊的ActiveXObject
对象,通过它可访问窗口
的本地文件系统
和应用,比如:有时需要得到用户的机器名,用户名
,得到某个文件的信息
,或读写注册表,或启动计算器
,邮箱
等应用.
new ActiveXObject
的用法
newObj = new ActiveXObject(servername.typename[, location])//`newObj`必选项.提供对象的应用名.`服务器名`必选项.提供对象的应用名.`型名`必选项.要创建的对象的`类型或类`.`位置`可选项.`创建对象`的`网络服务器`名返回一个`自动化`对象的引用
自动化
服务器至少提供一类对象,如字处理应用
可能提供应用对象
,文档对象和工具栏对象
.一般先用window.ActiveObject
判断下浏览器
是否支持ActiveXObject
对象
ActiveXObject
的常用对象及方法
[1]
创建Excel
的应用
和表
对象,代码如下:
var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet")
创建一旦对象,就可在代码中引用定义的对象变量
.
[2]
通过ExcelSheet
对象变量,访问新对象的属性和方法
和其他包括应用
对象和ActiveSheet.Cells
集合的Excel
对象.代码如下:
ExcelSheet.Application.Visible = true;
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
ExcelSheet.SaveAs("C:\\TEST.XLS");
ExcelSheet.Application.Quit();
[3]
在创建远程服务器
中创建对象
(注意:前提就是要将互联网
安全性关闭).
要在远程网络计算机创建对象
,可将该计算机名
传递给ActiveXObject
的服务器名
参数.该名与共享名
的机器名部分
相同.
如共享名为"\\myserver\public"
的网络,服务器名
是"myserver"
.另外,可用DNS
格式或IP
地址指定服务器名
.
如果没有或找不到时指定的远程服务器
将会错误.
function GetAppVersion() {var XLApp = new ActiveXObject("Excel.Application", "MyServer");return(XLApp.Version);//返回在名为`"myserver"`的远程网络计算机上运行的`Excel`实例的`版本号`
}
ActiveXObject
的应用举例
(1)WScript.Network
a
.取得机器名,登录域及登录用户名
function getusername()
{var WshNetwork = new ActiveXObject("WScript.Network");alert("Domain = " + WshNetwork.UserDomain);alert("Computer Name = " + WshNetwork.ComputerName);alert("User Name = " + WshNetwork.UserName);
}
(2)WScript.shell
a
.取得系统目录
function getprocessnum()
{var pnsys=new ActiveXObject("WScript.shell");pn=pnsys.Environment("PROCESS");alert(pn("WINDIR"));
}
b
.返回系统中特殊目录的路径
function getspecialfolder()
{var mygetfolder=new ActiveXObject("WScript.shell");if(mygetfolder.SpecialFolders("Fonts")!=null){alert(mygetfolder.SpecialFolders("Fonts"));}
}
c
.启动计算器
function runcalc()
{var calc=new ActiveXObject("WScript.shell");calc.Run("calc");
}
d
.注册表操作
//读注册表
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("删除路径错误");}}
}
(3)Scripting.filesystemobject
a
.取得磁盘信息传入参数如:getdiskinfo('c')
function getdiskinfo(para)
{var fs=new ActiveXObject("scripting.filesystemobject");d=fs.GetDrive(para);s="标签:" + d.VolumeName;s+="------" + "剩余空间:" + d.FreeSpace/1024/1024 + "M";s+="------" + "磁盘序列号:" + d.serialnumber;alert(s);
}
b
.文件操作
//取得文件信息调用方式如:`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);
}//遍历目录调用方式如:`enumFolders('c:\\')`
function enumFolders(para){var fso = new ActiveXObject("Scripting.FileSystemObject");var fldr = fso.GetFolder(para);var file = new Enumerator(fldr.files);var folderArr = [];var folder = new Enumerator(fldr.SubFolders);for (; !folder.atEnd(); folder.moveNext()){var folderStr = String(folder.item());folderArr.push(String(folder.item()).substring(folderStr.lastIndexOf("\\")+1,folderStr.length));}alert(folderArr.join(" "));
}
//----------------//遍历文件调用方式如:`enumFiles('c:\\')`
function enumFolders(para){var fso = new ActiveXObject("Scripting.FileSystemObject");var fldr = fso.GetFolder(para);var file = new Enumerator(fldr.files);var fileArr = [];for (; !file.atEnd(); file.moveNext()){var fileStr = String(file.item());fileArr.push(String(file.item()).substring(fileStr.lastIndexOf("\\")+1,fileStr.length));}alert(fileArr.join(" "));
}
c
.创建文件
function createText1(){var fso = new ActiveXObject("Scripting.FileSystemObject");var f1 = fso.createtextfile("c:\\myjstest.txt",true);f1.WriteLine("这是内容");f1.close();var kk=fso.OpenTextFile("c:\\a.txt");
//打开文件while(!kk.atEndOfLine){document.writeln(kk.readLine());
//读取文件,并`输出`}
}
}
function createText2(){var fso = new ActiveXObject("Scripting.FileSystemObject");var f1 = fso.GetFile("c:\\myjstest.txt");
}
(4)WbemScripting.SWbemLocator
a
.取系统CPU
var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
function getCpu()
{var service = locator.ConnectServer(".");var properties = service.ExecQuery("SELECT * FROM Win32_Processor");var e = new Enumerator (properties);var p = e.item ();return p.LoadPercentage;
}