亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

vbs能調用的系統對象小結

2020-06-26 17:38:50
字體:
來源:轉載
供稿:網友

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") ================================== 其他罕見的類型庫,如果你用得著,也可以列入常用庫:
消息隊列: ("msmq.msmqmessage") ("msmq.msmqqueueinfo") ("msmq.msmqquery")
索引服務: ("ixsso.query") ("ixsso.util")
信使服務: ("messenger.msgrobject") ("messenger.messengerapp") ("msnmessenger.messengerapp")
打印和傳真: ("winprint.winprintx") ("winfax.sdksend")? (faxserver.faxserver) ("fmfaxapi.application") ("oleprn.dsprintqueue.1")
數據庫會話: ("accpac.xapisession")
報表與pdf發布: ("impromptu.application.30")
條形碼與標簽: ("bartender.application")
郵件群發: ("notes.notessession") ("notes.notesuiworkspace") ("notes.notesuiworkspace")
網絡會議: ("netmeeting.app.1")
ms編程: ("msproject.application") ("sourcesafe.0")
路由與映射: ("mappoint.application")
矢量繪圖: ("visio.application")
建模: ("rose.application")

再談CreateObject函數,VBS到底能調用哪些對象?

VBS的CreateObject函數到底能夠創建哪些對象,幾乎是每個VBS新手都困惑的問題,他們總是熱衷于尋找“VBS對象大全”。

對象的注冊信息 HKEY_CLASSES_ROOT/CLSID/{GUID} 下可能會有這樣的一些子鍵:Control 說明該組件是一個 ActiveX 控件、Programmable 說明該組件支持自動化、Insertable 說明該組件可以被嵌入到一個 OLE 文檔容器中。能找到 Programmable,說明支持自動化,也就是支持 IDispatch 接口,所以它可以被腳本語言使用。不過這種方式比較老了,現在已經被一個的組件類屬代替,即 Implemented Categories 子鍵下面的 GUID 形式的子鍵。比如 HKEY_CLASSES_ROOT/CLSID/{72C24DD5-D70A-438B-8A42-98424B88AFB8}/Implemented Categories/{40FC6ED5-2438-11CF-A3DB-080036F12502},看一下 HKEY_CLASSES_ROOT/Component Categories/{40FC6ED5-2438-11CF-A3DB-080036F12502} 下的 409 字符串值為 Automation Objects,也就是“自動化對象”。

也就是說,如果注冊表中一個對象的ProgID對應的CLSID下包含有子鍵Programmable或者Implemented Categories/{40FC6ED5-2438-11CF-A3DB-080036F12502},那么這個對象就能用CreateObject函數創建。

假設上面的說法正確,那么我們可以用下面的腳本獲取“VBS對象大全”:

Option ExplicitConst HKEY_CLASSES_ROOT = &H80000000Dim arrProgID, strProgID, strCLSIDDim objReg, objFso, objFile, objShellSet objReg = GetObject("winmgmts://./root/default:StdRegProv")Set objFso = CreateObject("Scripting.FileSystemObject")Set objShell = CreateObject("WScript.Shell")Set objFile = objFso.OpenTextFile("ProgID.txt", 2, True)'By Demon'http://demon.twobjReg.EnumKey HKEY_CLASSES_ROOT, "", arrProgIDFor Each strProgID In arrProgID If GetCLSID(strProgID, strCLSID) Then  If IsProgrammable(strCLSID) Or IsAutomationObject(strCLSID) Then   objFile.WriteLine strProgID  End If End IfNextobjShell.Run "ProgID.txt"Function RegKeyExists(hKey, strSubKey) Dim a, n n = objReg.EnumKey(hKey, strSubKey, a) If n = 0 Then  RegKeyExists = True Else  RegKeyExists = False End IfEnd FunctionFunction IsAutomationObject(strCLSID) Dim strSubKey IsAutomationObject = False strSubKey = "CLSID/" & strCLSID & "/Implemented Categories" If RegKeyExists(HKEY_CLASSES_ROOT, strSubKey) Then  strSubKey = strSubKey & "{40FC6ED5-2438-11CF-A3DB-080036F12502}"  If RegKeyExists(HKEY_CLASSES_ROOT, strSubKey) Then   IsAutomationObject = True  End If End IfEnd FunctionFunction IsProgrammable(strCLSID) IsProgrammable = RegKeyExists(HKEY_CLASSES_ROOT, _  "CLSID/" & strCLSID & "/Programmable")End FunctionFunction GetCLSID(strProgID, strCLSID) Dim s GetCLSID = False If RegKeyExists(HKEY_CLASSES_ROOT, strProgID & "/CLSID") Then  objReg.GetStringValue HKEY_CLASSES_ROOT, strProgID & "/CLSID", "", s  If Not IsNull(s) Then   strCLSID = s   GetCLSID = True  End If End IfEnd Function

上面的腳本顯示在我的系統中存在1000多個對象可以調用。哇!VBS居然可以調用那么多對象!別高興得太早,我前面說了“假設上面的說法正確”。實際上,UMU的說法并不完全正確,Programmable或者Implemented Categories為{40FC6ED5-2438-11CF-A3DB-080036F12502}的對象也不一定能夠用CreateObject創建,比如我系統中有一個ComCtl3.Band就屬于這種情況;另外,某些對象并沒有Programmable或者Implemented Categories,但是照樣可以用CreateObject創建,比如說WindowsInstaller.Installer。

所以不能單純依靠注冊表的是非存在Programmable或者Implemented Categories來判斷,那么如果來判斷呢?一種方法是根據《VBS技術內幕:CreateObject函數》里面說的,寫一個C++程序來模擬CreateObject函數,判斷對象是否支持IDispatch接口。不過這樣太麻煩了,比較簡單的方法是讓CreateObject函數自己來判斷:

Option ExplicitConst HKEY_CLASSES_ROOT = &H80000000Dim arrProgID, strProgID, strCLSIDDim objReg, objFso, objFile, objShell, OSet objReg = GetObject("winmgmts://./root/default:StdRegProv")Set objFso = CreateObject("Scripting.FileSystemObject")Set objShell = CreateObject("WScript.Shell")Set objFile = objFso.OpenTextFile("ProgID.txt", 2, True)'By Demon'http://demon.twobjReg.EnumKey HKEY_CLASSES_ROOT, "", arrProgIDFor Each strProgID In arrProgID If GetCLSID(strProgID, strCLSID) Then  If IsCreatable(strProgID) Then   objFile.WriteLine strProgID  End If End IfNextobjShell.Run "ProgID.txt"Function IsCreatable(strProgID) On Error Resume Next Dim O Set O = CreateObject(strProgID) If Err.Number = 0 Then  IsCreatable = True Else  IsCreatable = False End If Set O = Nothing Err.ClearEnd FunctionFunction RegKeyExists(hKey, strSubKey) Dim a, n n = objReg.EnumKey(hKey, strSubKey, a) If n = 0 Then  RegKeyExists = True Else  RegKeyExists = False End IfEnd FunctionFunction GetCLSID(strProgID, strCLSID) Dim s GetCLSID = False If RegKeyExists(HKEY_CLASSES_ROOT, strProgID & "/CLSID") Then  objReg.GetStringValue HKEY_CLASSES_ROOT, strProgID & "/CLSID", "", s  If Not IsNull(s) Then   strCLSID = s   GetCLSID = True  End If End IfEnd Function

說了這么多,其實我真正想說的是,就算你用上面的腳本得到了“VBS對象大全”又有什么意義呢?我敢肯定的告訴你,這些對象里面有95%以上你從來都見過,也不知道它們是做什么的,更不用說去調用。

我常用的VBS對象只有下面幾個:

ADODB.Stream
InternetExplorer.Application
Msxml2.XMLHTTP
Scripting.Dictionary
Scripting.FileSystemObject
Shell.Application
WScript.Shell

把這些對象都弄懂了,VBS基本上就入門了。

以上部分內容來自:http://demon.tw/programming/createobject-again.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
尤物九九久久国产精品的特点| 国产精品第10页| 欧日韩不卡在线视频| 中文字幕欧美亚洲| 欧美成人午夜视频| 亚洲女人被黑人巨大进入al| 亚洲国产另类 国产精品国产免费| 国产一区二区香蕉| 久久精品欧美视频| 欧美日本精品在线| 亚洲欧美第一页| 欧美成人午夜影院| 97超级碰碰碰| 久久久久久久久网站| 日韩一区二区av| 一个人看的www久久| 亚洲国产三级网| 欧美高清在线播放| 成人激情在线播放| 日韩欧美成人网| 欧美日韩亚洲成人| 日韩av在线免费观看一区| 亚洲欧美日韩久久久久久| 国产精品一久久香蕉国产线看观看| 国产a∨精品一区二区三区不卡| 亚洲中国色老太| 亚洲欧美日韩精品久久| 精品久久久久久久久中文字幕| 欧美日韩中文字幕综合视频| 国产有码在线一区二区视频| 中文字幕免费精品一区| 国产午夜精品免费一区二区三区| 黄色精品在线看| 97久久精品人人澡人人爽缅北| 成人网在线免费观看| 成人激情视频小说免费下载| 亚洲美女福利视频网站| 久久影院在线观看| 亚洲精品网站在线播放gif| 亚洲码在线观看| 亚洲精品成人网| 国产日韩在线视频| 亚洲娇小xxxx欧美娇小| 欧美精品免费看| 国产日韩视频在线观看| 超碰日本道色综合久久综合| 青青青国产精品一区二区| 少妇高潮 亚洲精品| 久久精品电影一区二区| 亚洲女人天堂成人av在线| 国产精品情侣自拍| 一区二区三区www| 性欧美办公室18xxxxhd| 91在线无精精品一区二区| 久久av.com| 91免费精品国偷自产在线| 中文字幕日韩欧美在线视频| 欧美在线视频播放| 欧美激情欧美激情在线五月| 国产日韩在线视频| 欧美性猛交视频| 成人精品在线观看| 欧美片一区二区三区| 日韩av手机在线| 深夜精品寂寞黄网站在线观看| 亚洲自拍偷拍区| 国产精品www色诱视频| 久久亚洲精品成人| 国产精彩精品视频| 亚洲一区二区久久| 国产精品在线看| 亚洲精品一区二区在线| 97精品一区二区三区| 午夜精品三级视频福利| 中文字幕精品久久| 亚洲国产精品系列| 久久综合伊人77777尤物| 国产成人亚洲综合91| 亚洲v日韩v综合v精品v| 亚洲欧美中文日韩v在线观看| 欧美成人精品在线播放| 成人午夜在线视频一区| 91久久精品国产91性色| 91影院在线免费观看视频| 色综合久久天天综线观看| 国产精品视频一区二区三区四| 成人免费在线视频网址| 成人h片在线播放免费网站| 国产v综合ⅴ日韩v欧美大片| 亚洲电影免费在线观看| 欧美激情一二区| 日韩欧美a级成人黄色| 日韩欧美视频一区二区三区| 国产精品久久久久久久久久新婚| 91欧美日韩一区| 欧美精品在线网站| 日韩最新中文字幕电影免费看| 欧美日韩一区二区三区| 欧美高清不卡在线| 亚洲国产欧美在线成人app| 国产精品18久久久久久麻辣| 另类视频在线观看| 欧美性猛交视频| 97国产精品视频人人做人人爱| 欧美视频裸体精品| 日韩av中文字幕在线播放| 亚洲人成在线观看网站高清| 亚洲美女福利视频网站| 在线精品高清中文字幕| 欧美日韩一区二区免费在线观看| 色综合亚洲精品激情狠狠| 亚洲在线一区二区| 最近2019中文免费高清视频观看www99| 日韩精品欧美激情| 欧美成人午夜视频| 日韩中文字幕亚洲| 精品国产一区二区三区久久久| 久久久久久伊人| 久久久女人电视剧免费播放下载| 久久天天躁夜夜躁狠狠躁2022| 久久精品亚洲一区| 九九热这里只有在线精品视| 精品一区电影国产| 国产精品久久久久福利| 欧美性xxxxxxxxx| 全亚洲最色的网站在线观看| 98午夜经典影视| 日本不卡视频在线播放| 日韩欧美在线播放| 亚洲精品一二区| 国产亚洲精品日韩| 亚洲自拍偷拍网址| 亚洲18私人小影院| 日韩av在线不卡| 亚洲国产免费av| 欧美日韩美女在线观看| 国产精品视频一区二区三区四| 伊人成人开心激情综合网| 另类图片亚洲另类| 亚洲经典中文字幕| 成人国产精品久久久久久亚洲| 国产精品专区一| 亚洲国产精品字幕| xxx成人少妇69| 日韩精品免费视频| 久久精品视频99| 狠狠做深爱婷婷久久综合一区| 性欧美暴力猛交69hd| 国产伦精品免费视频| 日韩av中文在线| 欧美日韩国产激情| 国产精品pans私拍| 欧美激情综合色综合啪啪五月| 搡老女人一区二区三区视频tv| 国产精品入口免费视| 久久99精品久久久久久青青91| 国产精品视频区| 日韩精品视频在线播放| 韩国三级电影久久久久久| 成人精品一区二区三区电影免费| 亚洲第一中文字幕在线观看| 精品亚洲一区二区三区| 久久91亚洲精品中文字幕| 久久久国产影院|