首页 > 编程 > VBScript > 正文

不错的一篇VBS-JSCRIPT GETOBJECT理解

2020-06-26 18:08:15
字体:
来源:转载
供稿:网友
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") 
 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表