不错的一篇VBS-JSCRIPT GETOBJECT理解 |
2年前,当时自己在写ASPSHELL的时候 一直不理解为什么 GetObject("WinNT://.") 可以获得本地系统 的一些重要信息 当时MSDN是这样一个解析的 ----------- Windows 脚本宿主 GetObject 方法 请参阅 WScript 对象 | CreateObject 方法 | DisconnectObject 方法 用指定的 ProgID 检索现有的对象或从文件中创建新对象 。 object.GetObject(strPathname [,strProgID], [strPrefix]) 参数 object WScript 对象 。 strPathname 包含保留到磁盘中的对象的文件的完全限定路径名 。 strProgID 可选 。对象的程序标识符 (ProgID) 。 strPrefix 可选 。在要同步对象的事件时使用 。如果您提供 strPrefix 参数,则 WSH 会在创建对象后将该对象的输出接口连接到脚本文件 。 说明 如果对象的实例存储在内存中,或者您要从文件创建对象,则使用 GetObject 方法 。如果内存中没有当前的实例,并且您不希望从文件创建对象,则请使用 CreateObject 方法 。GetObject 方法可用于所有的 COM 类,而与用于创建对象的语言无关 。如果您提供 strPrefix 参数,则 WSH 会在创建对象后将该对象的输出接口连接到脚本文件 。当对象引发事件时,WSH 将调用在事件名称开头附加 strPrefix 的子例程 。例如,如果 strPrefix 是 MYOBJ_,对象引发的事件名为 OnBegin,则 WSH 调用脚本中的 MYOBJ_OnBegin 子例程 。 如果某个对象被注册为单实例对象,则只创建该对象的一个实例(无论您执行了多少次 GetObject,都是如此) 。GetObject 方法返回的实例总是与用零长度字符串语法 ("") 调用的实例相同,如果未提供路径参数,则会发生错误 。GetObject 方法不能用于获得对用 Visual Basic 4.0 或更低版本创建的 Microsoft Visual Basic 类的引用 。 示例 下面的 VBScript 代码启动与指定的文件 (strPathname) 相关联的应用程序: Dim MyObject As Object Set MyObject = GetObject("C:\CAD\SCHEMA.CAD") MyApp = MyObject.Application 某些应用程序允许您激活文件的一部分 。为此,在文件名的结尾处添加一个感叹号 (!),并在其后附加一个标识文件中要激活部分的字符串 。例如,在绘图应用程序中,文件中存储的绘图可能有多层 。下面的代码激活名为 SCHEMA.CAD 的绘图文件中的某一层: Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3") 如果未指定对象的类 (strProgID),则 COM 确定要从该文件名启动的应用程序 。某些文件可支持多个对象类 。例如,某个绘图可能支持三个不同类型的对象:应用程序对象、绘图对象和工具栏对象 。所有这些都可能在同一个文件中 。 在下面的 VBScript 代码中,绘图应用程序 FIGMENT 从 SAMPLE.DRW 文件启动,并打开其中的 DRAWING 对象 。 Dim MyObject As Object Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING") 请参阅 WScript 对象 | CreateObject 方法 | DisconnectObject 方法 --------------- 但是看完之后还没有理解'' N年之后的今天'' 突然看了一篇文章'''终于理解了 其实 GetObject 就是 从一个文件 或者 对象中取得信息 取得其操作 例如 GetObject("WinNT://.") 这个就是系统对象了' 而假如你系统装了OFFICE的 EXCEL 那我们就可以这样获得对象 Set xls = GetObject("d:\1.xls","Excel.Application") 第一参数是 xls的文件路径 第2个参数是对象的类型 也可以让他自动识别 Set xls = GetObject("d:\1.xls") |