VBS脚本编程(6)——对象的创建与调用

时间:2024-02-01 09:10:54
对象:严格的说,对象是复杂数据和程序结构在内存中的表现,只有在程序运行时才存在。包含有方法和属性。

对象的创建及用法

1. Set 语句

将对象引用赋给一个变量或属性,或者将对象引用与事件关联。
Set objectvar = {objectexpression | New classname | Nothing}
-或者-
Set object.eventname = GetRef(procname)
 
参数
objectvar
必选项,变量或属性名称;符合标准变量命名规则。
objectexpression
可选项,与对象名称一致的表达式,另一个相同对象类型、函数或方法的已声明变量,它们返回相同对象类型的对象。
New
用于创建一个类的新实例的关键字。如果 objectvar 包含一个对某个对象的引用,当一个新的引用被赋给这个对象之后,则这个引用将被释放。New 关键仅用于创建一个类的实例。
classname
可选项. 创建的类名称。使用 Class 语句定义类及其语句。
Nothing
可选项。断开 objectvar 与任何指定对象或类的关联。当没有其他变量引用前面的引用对象时,将 objectvar 赋值为 Nothing 以释放与前面的引用对象相关联的系统或内存资源。
object
必选项。与 event 相关联的对象名称。
event
必选项。函数作用域的事件名称。
procname
必选项。包含与event 相关联的 SubFunction 名称的字符串。
 
说明
为了使其有效,objectvar 必须与赋值的对象类型相一致。
DimPrivatePublicReDim 语句仅声明一个引用对象的变量。在使用. Set 语句为一个具体对象赋值之前,没有实际对象可以引用。
通常, 当您使用 Set 语句将一个对象引用赋给一个变量之前,不会创建那个变量的对象的副本。实际上,只创建了一个对象的引用。多个引用对象变量可以引用相同的对象。因为这些变量都是对象的引用,而不是对对象副本的引用,因此对象中所作的任何变化都可以在引用该对象的所有变量中反映出来。
利用 New 关键字,您可以随时创建一个类的实例,并将一个对象引用变量赋值给它。赋给类的实例的变量一定利用 Dim (或相似的语句)语句事先已经声明。
 

2. CreateObject 函数

创建并返回对 Automation 对象的引用。
CreateObject(servername.typename [, location])
参数
servername
必选项。提供对象的应用程序名称。
typename
必选项。要创建的对象类型或类。
location
可选项。对象所在的网络服务器将被创建。
 
说明
Automation 服务器至少提供一种对象类型。例如,字处理应用程序可以提供应用程序对象、文档对象和工具条对象。
要创建 Automation 对象,将 CreateObject 函数返回的对象赋值给某对象变量
举例,创建Excel表格对象:
Dim ExcelSheet
    Set ExcelSheet = CreateObject("Excel.Sheet")
' 上述代码启动创建对象(在此实例中,是 Microsoft Excel 电子表格)的应用程序。
' 对象创建后,就可以在代码中使用定义的对象变量引用此对象。
' 在下面的示例中,可使用对象变量、ExcelSheet 和其他 Excel 对象,包括 Application 对象和 Cells 集合访问新对象的属性和方法。
' 例如:
	' 使 Excel 在整个 Application 对象中都可见。
	ExcelSheet.Application.Visible = True
	' 将一些文本放入工作表的第一个单元格中。
	ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"
	' 保存工作表。
	ExcelSheet.SaveAs "C:\DOCS\TEST.XLS"
	' 关闭 Excel,使 Quit 方法处于 Application 对象中。
	ExcelSheet.Application.Quit
	' 释放对象变量。
	Set ExcelSheet = Nothing
在远程服务器上创建一个对象,当 Internet 安全关闭时只能完成。通过传递计算机名到 CreateObject 服务器名的参数,能在远程网络上创建对象。该名称如同共享部份的机器名。例如网络共享名命名为: "\\myserver\public", servername 是 "myserver"。另外,只能指定 servername 使用 DNS 格式或 IP 地址。
 

3. GetObject 函数

返回对文件中 Automation 对象的引用。
GetObject([pathname] [, class])
参数
Pathname
可选项。字符串,包含待检索对象的文件的完整路径和名称。如果省略 pathname 则必须有 class
Class
可选项。字符串,对象的类。
 
class 参数的语法格式为 appname.objectype,其中包括以下部分:
参数
appname
必选项。字符串,提供对象的应用程序名称。
objectype
必选项。字符串,要创建的对象的类型或类。
 
说明
使用 GetObject 函数可以访问文件中的 Automation 对象,而且可以将该对象赋值给对象变量。使用 Set 语句将 GetObject 返回的对象赋值给对象变量。
 

常用的VBS调用对象

  • 文件系统对象相关: ("scripting.filesystemobject")
  • 字典相关: ("scripting.dictionary")
  • 脚本外壳相关: ("wscript.shell")
  • windows外壳相关: ("shell.application")
  • 正则表达式相关: ("vbscript.regexp")
  • asp相关: ("mswc.adrotator") ("mswc.nextlink") ("mswc.myinfo")
  • 公用对话框相关: ("mscomdlg.commondialog")
  • 编码与密码相关: ("scriptpw.password") ("scripting.encoder")
  • 邮件发送的组件相关: ("jmail.message") ("cdonts.newmail") ("cdo.configuration") ("eudora.euapplication.1") ("novellgroupwaresession")
  • 水晶报表相关: ("crystalruntime.application")
  • ie浏览器相关: ("internetexplorer.application")
  • windows媒体播放相关: ("wmplayer.ocx") ("wmplayer.ocx.7")
  • 助手角色相关: ("agent.control")
  • ado相关: ("adodb.connection") ("adodb.command") ("adodb.recordset") ("adodb.record") ("adodb.stream") ("dao.dbengine.35") ("adox.catalog") ("adox.table")
  • sql相关: ("sqldmo.sqlserver") ("sqldmo.login") ("sqldmo.backup") ("sqldmo.user") ("sqldmo.backupdevice") ("sqldmo.database") ("sqldmo.restore") ("sqldmo.application") office相关: ("word.application") ("excel.application") ("powerpoint.application") ("excel.sheet") ("frontpage.application") ("access.application") ("msgraph.application") ("outlook.application")
  • 图像图形相关: ("aspimage.jpeg") ("persits.jpeg") ("activeimage.images.1")("jsdraw.ops") ("jsiptc.jpgedit") ("gflax.gflax") ("photoshop.application")
  • 语音朗读相关: ("speech.voicetext") ("speech.voicetext.1") ("sapi.spvoice") ("sapi.spfilestream") ("texttospeech.texttospeech") ("texttospeech.texttospeech.1") ("activevoice.activevoice") ("activevoice.activevoice.1")
  • 操作系统相关: ("jsdlgbox.browser") ("jsbin.binaryops") ("jsform.window") ("jslistvw.list") ("jssys3.ops") ("jssys3.iniedit") ("tli.tliapplication") ("autoitx3.control") ("windowsinstaller.installer") ("virtualserver.application") ("useraccounts.commondialog") ("mosearch.gatherlog.1") ("mscomdlg.commondialog")
  • wmi相关: ("wbemscripting.swbemdatetime") ("wbemscripting.swbemlocator") ("wbemscripting.swbemnamedvalueset") ("wbemscripting.swbemsink","sink_")("wbemscripting.swbemrefresher") ("wbemscripting.swbemlasterror") ("wbemscripting.swbemobjectpath")
  • web,net相关: ("winhttp.winhttprequest") ("winhttp.winhttprequest.5.1") ("msxml2.serverxmlhttp") ("microsoft.xmlhttp") ("microsoft.xmldom") ("msxml2.xmlhttp.4.0") ("wscript.network") ("asphttp.conn") ("inetctls.inet") ("post.clspost") ("webget.web") ("netcommocx.netcomm","com_")("mswinsock.winsock") ("rcbdyctl.setting")