打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBScript的常用COM對象列表
VBScript的常用COM對象列表
发布: 2014-11-29 18:58:28 | 作者: | 来源: 按键精灵资源站
本帖最后由 ghouse 于 2014-11-29 19:01 编辑

有時會在論壇中看到一些很妙的寫法,有許多其實是vbs的原有功能
他們會在腳本中創建一些對象來實現某些特定的功能。

而其實我們都知道,從按鍵8之後,就已經完整支持vbs了,
可是在按鍵裡面的教程對於vbs比較特殊的方式,很難找到

所以啦!~~~~就把一些比較常用的vbs的功能寫下來囉!~~順便自己研究研究


下邊是經常在VBScript中用到的對象列表:
Set objEmail = CreateObject("CDO.Message" )
Set objIE = CreateObject("InternetExplorer.Application" )
Set objInet = CreateObject("InetCtls.Inet.1" )
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1" )
Set objExcel =CreateObject("Excel.Application" )
Set objOutlook = CreateObject("Outlook.Application" )
Set objPpt = CreateObject( " PowerPoint.Application")
Set objWord = CreateObject("Word.Application" )
Set objCal = CreateObject("MSCAL.Calendar" )
Set objQPro = CreateObject("QuattroPro.PerfectScript")
Set objWP = CreateObject("WordPerfect.PerfectScript」")
Set objConn = CreateObject("ADODB.Connection" )
Set objRecSet = CreateObject("ADODB.Recordset" )
Set objDic = CreateObject("Scripting.Dictionary")
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set wshNetwork = CreateObject("WScript.Network" )
Set wshShell = CreateObject("WScript.Shell")
Set objRandom = CreateObject("System.Random" )
Set objArrList = CreateObject("System.Collections.ArrayList")
Set objSortList = CreateObject("System.Collections.SortedList" )
Set xmlDoc = CreateObject( "Microsoft.XmlDom")
Set xml2Doc = CreateObject("Msxml2.DOMDocument.5.0")
Set objiTunes = CreateObject("iTunes.Application")
Set objPlayer = CreateObject("WMPlayer.OCX" )
Set objWMPlayer = CreateObject("WMPlayer.OCX.7" )
Set objReal = CreateObject( "rmocx.RealPlayerG2 Control.1")
Set objFSDialog = CreateObject("SAFRCFileDlg.FileSave")
Set objFODialog = CreateObject("SAFRCFileDlg.FileOpen" )
Set objDialog = CreateObject("UserAccounts.CommonDialog")
Set SOAPClient = CreateObject("MSSOAP.SOAPClient")
Set objWOL = CreateObject("UltraWOL.ctlUltraWOL")
Set objSearcher = CreateObject("Microsoft.Update.Searcher")
Set objShell = CreateObject("Shell.Application")
SetobjDeviceReplay=CreateObject("Mercury.DeviceReplay")
以下是示例演示:

[hr]
描述:創建和返回一個自動化對象的引用

語法: CreateObject(class)
class 參數使用了語法servername.typename
servername: 提供對象的應用程序的名稱
typename: 對象的類型或類
說明:每個自動化對象至少提供一種對象類型。例如,一個文字處理程序可能會提供一個應用程序對象,一個文件對象和一個工具欄對象。要創建一個自動化對象,需要把CreateObject創建的對象變量賦給一個對象變量。

示例1:
創建一個Excel應用程序對象 (「Excel.Application」 )

//關閉桌面上打開的所有Excel表格
Systemutil.CloseProcessByName"excel.exe"
//創建一個新的Excel對象
Set Excel =CreateObject("Excel.Application")
//打開Excel表格
Set SExcelSheet =Excel.Workbooks.Open("C:\Users\djiao\Documents\ella\CR_Report.xlsx")
//設置表格可見
SExcelSheet.Application.visible=true
//關閉任何Excel的錯誤窗口或提示信息
Excel.DisplayAlerts = False
//重命名並保存Excel到不同的路徑下
SExcelSheet.SaveAs"C:\BaseLine.xlsx"
//關閉Excel的表格
SExcelSheet.Close
//退出Excel應用程序
Excel.Quit

示例3A:
創建文件系統對象 (「Scripting.FileSystemObject」)

//將要創建的文件夾的存放路徑
strDrive = "D:\DATA"
//要創建的文件夾名稱
strfoldername= "New Folder"
//獲取文件夾的絕對路徑
strPath=strDrive&"\"&strfoldername
//創建 FileSystemObject 對象Set objFSO =CreateObject("Scripting.FileSystemObject")
//文件夾不存在時,創建文件夾If NOT objFSO.FolderExists(strPath) Then
  objFSO.CreateFolder strPath
End If
//釋放文件系統對象Set objFSO = nothing
示例3B:
//Get the name of file extention
msgbox GetAnExtension("C:\ProgramFiles (x86)\HP\QuickTest Professional\bin\QTPro.exe")
Function GetAnExtension(DriveSpec)
         Dimfso
         Setfso = CreateObject("Scripting.FileSystemObject")
         GetAnExtension= fso.GetExtensionName(Drivespec)
         Setfso = nothing
End Function

示例4:
郵件發送對象(「CDO.Message」)

Dim objMessage

//創建郵件發送對象
Set objMessage =CreateObject("CDO.Message")
//給郵件添加主題
objMessage.Subject = "QTP Results –Automated Testing"
objMessage.From ="QTPTesting@address.com" ' 改為你自己的郵箱地址
objMessage.To = "your@email.com"'收件人郵箱地址
objMessage.CC = "your@email.com"'CC to email id
//郵件內容objMessage.TextBody ="N.B. – Please DoNot Reply This Message Directly."
//添加附件objMessage.AddAttachment"D:\Data\file.text"
//這部分提供了遠程SMTP server的配置信息objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")= 2
//設置SMTP server的name或IP
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= "smtp.163.com"
//服務器端口號(通常是 25)
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")= "someserver.domain.com"
objMessage.Configuration.Fields.Update
//發送郵件objMessage.Send
//釋放郵件對象Set objMessage = nothing


示例5:
創建WshShell對象 (「Wscript.Shell」)

說明:WScript.Shell是WshShell對象的ProgID,創建WshShell對象可以運行程序、操作註冊表、創建快捷方式、訪問系統文件夾、管理環境變量。
Set WshShell =CreateObject("Wscript.Shell")
Dim Response
//顯示一個帶有yes和no的消息框
Response = MsgBox(" Please Select yourchoice as 『Yes' or 『No'.", vbYesNo)

If Response = vbYes Then
         //消息框會顯示3秒鐘
         WshShell.Popup"You Have Been Selected 「Yes」. Please wait.", 3, "YourSelection"
Else

         //消息框會顯示5秒
         WshShell.Popup"You Have Been Selected 「No」", 5, "Your Selection"
End If

Set WshShell = nothing


示例6A:
Mercury.DeviceReplay對象  (「Mercury.DeviceReplay」)

說明:這個對象用來模擬鼠標的單擊和移動、鍵盤輸入等。使用該對象前,需要保證鍵盤狀態正確,如NUMLOCK是否打開等,DeviceReplay不能檢測鍵盤狀態。
//定義坐標
Dim abs_x, abs_y
abs_x = 200
abs_y = 200

//創建Mercury.DeviceReplay對象
Set objMercuryMouse = CreateObject("Mercury.DeviceReplay")
//移動鼠標到指定坐標
objMercuryMouse.MouseMove abs_x,abs_y
//鼠標左擊
objMercuryMouse.MouseClick abs_x,abs_y,LEFT_MOUSE_BUTTON
//釋放Mercury.DeviceReplay對象
Set objMercuryMouse = nothing


示例7:
字典對象(「Scripting.Dictionary」)

//創建dictionary對象
Dim d
Set d =CreateObject("Scripting.Dictionary")
//給dictionary添加key和value
d.Add "a","Athens"   
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
//獲取所有的item
a = d.Items
For i = 0 To d.Count -1 ' Iterate thearray.
  s =s & a(i) & VBCrLF ' Create return string.
Next
print s
//根據key獲取item
print d.Item("a")
//釋放dictionary對象
Set d = nothing
Example 8A: Connection對象,數據集對象("ADODB.Connection")/("ADODB.Recordset")
Function database()
         v_DBInstance= "RENPCRT8"
         v_MHXMLDBPwd= "grudge"
         v_MHXMLDBSchema= "Mhxmledit"

         //創建數據庫連接對象和數據集對象
         ConstadOpenStatic = 3
         ConstadLockOptimistic = 3
         ConstadUseClient = 3
         SetobjConnection = CreateObject("ADODB.Connection")
         SetobjRecordset = CreateObject("ADODB.Recordset")
         objConnection.Open"DRIVER={Microsoft ODBC for Oracle};UID="& v_MHXMLDBSchema&" ; PWD="& v_MHXMLDBPwd & ";SERVER="&v_DBInstance &」;"
         objRecordset.CursorLocation= adUseClient
         objRecordset.CursorType= adopenstatic
         objRecordset.LockType= adlockoptimistic
         objRecordset.Source= "select SOP from MHXML.FIRMS_STG where org_id in 681915"
         ObjRecordset.ActiveConnection= ObjConnection

         //執行查詢語句
         ObjRecordset.Open
         IfObjRecordset.recordcount>0 then
                   Field1= ObjRecordset("SOP").Value
                   msgboxField1
         Endif
End Function


Example 8B:
(「Database connection withoutADODB.Connection Object」)


此方法可以從數據庫中獲取值為空或者null的數據
Function GetAttorneyInfo(InField,ALid)
         v_DBInstance="RENPCRT8"
         v_MHXMLDBPwd="creek"
         v_MHXMLDBSchema="lbmgradmin"
         GetAttorneyInfo=""

         //創建數據庫連接
         MHXMLconnection_string="DRIVER={MicrosoftODBC for Oracle};UID="& v_MHXMLDBSchema &" ; PWD="&v_MHXMLDBPwd &";SERVER=" & v_DBInstance &";"
         isMHXMLConnected= db_connect ( MHXMLConnection ,MHXMLconnection_string )

         IfisMHXMLConnected=0Then '從表中獲取數據

                   v_Exe_SQL2="Selectlength(NVL(" & InField & ",'Data Not Found')) fromlbmgradmin.ilv_vw where ilisting_id = " & ALid
                   setRecSet_SOPInfo_LEN = db_execute_query( MHXMLConnection , v_Exe_SQL2 )
                   d_SOPInfo_Length= db_get_field_value( RecSet_SOPInfo_LEN , 0 , 0 )
                   v_Exe_SQL2="selectsubstr(to_char(NVL(" & InField & ",'Data NotFound')),1," & d_SOPInfo_Length & ") from lbmgradmin.ilv_vwwhere ilisting_id = " & ALid
                   setRecSet_SOPInfo = db_execute_query( MHXMLConnection , v_Exe_SQL2 )
                   RowCnt= db_get_rows_count( RecSet_SOPInfo )

                   IfRowCnt=1Then
                            d_SOPInfo=db_get_field_value(RecSet_SOPInfo , 0 , 0 )
                   else
                            datatable.SetCurrentRow(1)
                            d_SOPInfo=db_get_field_value(RecSet_SOPInfo , 0 , 0 )
                   EndIf
         else
         EndIf
         GetAttorneyInfo=d_SOPInfo
End Function

//打開數據庫連接
Function db_connect( byRef curSession,connection_string)
         Dimconnection
         onerror Resume next

         //創建數據庫連接對象
         setconnection = CreateObject("ADODB.Connection")
         IfErr.Number <> 0 then
                   db_connect="Error # " & CStr(Err.Number) &" " &Err.Description
                   err.clear
                   ExitFunction
         EndIf

         connection.Openconnection_string
         IfErr.Number <> 0 then
                   db_connect="Error # " & CStr(Err.Number) & " " &Err.Description
                   err.clear
                   ExitFunction
         EndIf
         setcurSession=connection
         db_connect=0
End Function
//關閉數據庫連接
Function db_disconnect( byRef curSession )
         curSession.close
         setcurSession = Nothing
End Function
//執行查詢語句
Function db_execute_query ( byRefcurSession , SQL)
         setrs = curSession.Execute( SQL )
         setdb_execute_query = rs
End Function
//獲取數據集的行數
Function db_get_rows_count( byRef curRS )
         dimrows
         rows= 0
         curRS.MoveFirst
         DoUntil curRS.EOF
         rows= rows+1
         curRS.MoveNext
         Loop
         db_get_rows_count= rows
End Function


Example 8C:
(「ADODB.Connection」)/(「ADODB.Recordset」)
此示例從Excel表單中獲取數據
//創建數據庫連接對象
Dim Get_Field
set connectToDB =CreateObject("ADODB.Connection")
connectToDB.Provider ="Microsoft.Jet.OLEDB.4.0"
connectToDB.Properties("ExtendedProperties").Value = "Excel 8.0"
connectToDB.Open "D:\Documents andSettings\pauldx\Desktop\Data.xls"
strQuery="Select Age from [Data$]WHERE Name ='Joli'"
//創建數據集對象
Set rsRecord =CreateObject("ADODB.Recordset")
rsRecord.Open strQuery,connectToDB,1,1

If rsRecord.RecordCount>0 Then
         fori= 1 to rsRecord.RecordCount
                   Get_Field=rsRecord.Fields(0)
                   printGet_Field
                   rsRecord.movenext
         next
Else
         Get_Field="FieldNot Present"
End If


Example 9:
("AcroExch.App"/"AcroExch.AVDoc")

此段代碼可以從pdf 文件中搜索Software單詞
備註:這段代碼只有當你安裝了acrobat 專業版安裝的時候才可以使用。如果只安裝了adobe 閱讀器的標準版,你會看到如下報錯「ActiveX component can't create object: 『AcroExch.PDDoc」」

Option Explicit
Dim accapp, acavdocu
Dim pdf_path, bReset, Wrd_count
pdf_path="C:\test.pdf"
//創建AcroExch i應用程序對象
Setaccapp=CreateObject("AcroExch.App")
accapp.Show()
//創建AVDoc對象
Setacavdocu=CreateObject("AcroExch.AVDoc")
//打開PDF文件
If acavdocu.Open(pdf_path,"")Then
acavdocu.BringToFront()
bReset=1 : Wrd_count = 0
//查找,定位並高亮指定文本
Do Whileacavdocu.FindText("software", 1, 1, bReset)
bReset=0: Wrd_count=Wrd_count+1
Wait 0, 200
Loop
End If
accapp.CloseAllDocs()
accapp.Exit()
msgbox "The word 'software' was found" & Wrd_count & "times"
Set accap=nothing
Set accapp=nothing

Example 10:
.Net 對象("DotNetFactory")

說明:DotNetFactory對象允許創建一個.NET對象,並訪問其方法和屬性


//創建.Net的form對象
Dim var_CreateInstance
Set var_CreateInstance =DotNetFactory.CreateInstance("System.Windows.Forms.Form","System.Windows.Forms")
//顯示form
var_CreateInstance.Show
wait 2
//關閉form
var_CreateInstance.Close
//釋放.Net對象
Set var_CreateInstance = nothing?
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA-CreateObject 函数
SQL中的查询用法实例
[转]数据驱动在QTP的运用
Excel中利用VB宏调用SQL示例
asp代码实现EXCEL数据导入到SQL数据库
用ASP上传Excel 表格并导入到数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服