不错的一篇VBS-JSCRIPT GETOBJECT理解

时间:2021-05-22

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方法不能用于获得对用VisualBasic4.0或更低版本创建的MicrosoftVisualBasic类的引用。
示例
下面的VBScript代码启动与指定的文件(strPathname)相关联的应用程序:
DimMyObjectAsObject
SetMyObject=GetObject("C:\CAD\SCHEMA.CAD")
MyApp=MyObject.Application
某些应用程序允许您激活文件的一部分。为此,在文件名的结尾处添加一个感叹号(!),并在其后附加一个标识文件中要激活部分的字符串。例如,在绘图应用程序中,文件中存储的绘图可能有多层。下面的代码激活名为SCHEMA.CAD的绘图文件中的某一层:
SetLayerObject=GetObject("C:\CAD\SCHEMA.CAD!Layer3")
如果未指定对象的类(strProgID),则COM确定要从该文件名启动的应用程序。某些文件可支持多个对象类。例如,某个绘图可能支持三个不同类型的对象:应用程序对象、绘图对象和工具栏对象。所有这些都可能在同一个文件中。
在下面的VBScript代码中,绘图应用程序FIGMENT从SAMPLE.DRW文件启动,并打开其中的DRAWING对象。
DimMyObjectAsObject
SetMyObject=GetObject("C:\DRAWINGS\SAMPLE.DRW","FIGMENT.DRAWING")
请参阅
WScript对象|CreateObject方法|DisconnectObject方法
---------------
但是看完之后还没有理解~~
N年之后的今天~~突然看了一篇文章~~~终于理解了
其实GetObject就是从一个文件或者对象中取得信息取得其操作
例如
GetObject("WinNT://.")这个就是系统对象了~
而假如你系统装了OFFICE的EXCEL那我们就可以这样获得对象
Setxls=GetObject("d:\1.xls","Excel.Application")'第一参数是xls的文件路径第2个参数是对象的类型
也可以让他自动识别
Setxls=GetObject("d:\1.xls")

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章