简单理解js之ActiveX控件 new ActiveXObject
ActiveX控件
切记:ActiveX是微软的东西,故只有IE才支持!
ActiveX控件,它一些可重用的软件组件或对象,通过使用ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。比如使用ActiveX,可以轻松方便的在Web页面中插入多媒体的效果、交互对象、以及复杂程序,例StockTicker控件可以用来在网页上即时的加入活动信息,动画插件可以用来在网页上加入特殊动画特性。
现在,已有1000多个商用的ActiveX控件,开发控件可以使用各种编程语言,如c,c++,使用者无需知道这些组件如何让开发的,在很多情况下,甚至不需要自己编程,就可以完成网页或程序设计
ActiveX 控件广泛用于 Internet。它们可以通过提供视频、动画内容等来增加浏览的乐趣。不过,这些程序可能出问题或者向您提供不需要的内容。在某些情况下,这些程序可被用来以您不允许的方式从计算机收集信息、破坏您的计算机上的数据、在未经您同意的情况下在您的计算机上安装软件或者允许他人远程控制您的计算机。要用户单独下载然后执行安装,而ActiveX插件是当用户浏览到特定的网页时,IE浏览器即可自动下载并提示用户安装。 ActiveX插件安装的一个前提是必须经过用户的同意及确认。考虑到这些风险,您应该在完全信任发行商的情况下才安装这些程序。
ActiveX插件以前也被叫做OLE控件或OCX控件
ActiveX控件功能
按照分类功能ActiveX控件有4项主要功能
1.自动化服务器:可以有其他应用程序编程驱动的组件
2.自动化控制器:那些使用和操纵自动化服务器的应用程序
3.控件:ActiveX控件等价于以前的OLE控件或OCX
4.文档:ActiveX文档,即以前所说的DocObject,表示一种不仅仅是简单控件或自动化服务器的对象
ActiveXObject对象
javascript有个特殊的对象ActiveXObject,通过它可以访问windows的本地文件系统和应用程序,比如:有的时候我们需要得到用户的机器名,用户名,得到某个文件的信息,或者读写注册表,或者启动计算器、outlook等应用程序。
new ActiveXObject的使用方法
newObj = new ActiveXObject(servername.typename[, location])
//newObj 必选项。提供对象的应用程序名称
//servername 必选项。提供对象的应用程序的名称
//typename 必选项。要创建的对象的类型或类
//location 可选项。创建对象的网络服务器的名称
//返回一个Automation对象的引用
Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。通常先用window.ActiveObject判断下浏览器是否支持ActiveXObject对象
ActiveXObject的常用对象及方法
【1】创建Excel的Application和Sheet对象,代码如下:
var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet")
一旦对象被创建,就可以用定义的对象变量在代码中的引用它。
【2】通过对象变量 ExcelSheet 访问新对象的属性和方法和其他 Excel 对象,包括 Application 对象和 ActiveSheet.Cells 集合。代码如下:
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】在创建远程服务器中创建对象(注意:前提就是要将Internet安全性关闭)。
要在远程网络计算机创建对象,可以将该计算机的名称传递给 ActiveXObject 的 servername 参数。该名称与共享名的机器名部分相同。比如共享名为 "\\myserver\public" 的网络,servername 是 "myserver"。另外,可以用 DNS 格式或 IP 地址指定 servername。如果指定的远程服务器不存在或找不到时将会发生错误。
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; }