VBS指令碼程式設計(6)——物件的建立與呼叫

Ulysses~發表於2021-06-24
物件:嚴格的說,物件是複雜資料和程式結構在記憶體中的表現,只有在程式執行時才存在。包含有方法和屬性。

物件的建立及用法

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") 

相關文章