返回顶部
首页 > 资讯 > 精选 >vbs能调用的系统对象有哪些
  • 834
分享到

vbs能调用的系统对象有哪些

2023-06-08 08:06:18 834人浏览 安东尼
摘要

这篇文章主要为大家展示了“vbs能调用的系统对象有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbs能调用的系统对象有哪些”这篇文章吧。vbs能调用系统对象:文件系统对象相关: (&quo

这篇文章主要为大家展示了“vbs能调用的系统对象有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbs能调用的系统对象有哪些”这篇文章吧。

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能调用的系统对象有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: vbs能调用的系统对象有哪些

本文链接: https://lsjlt.com/news/253115.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vbs能调用的系统对象有哪些
    这篇文章主要为大家展示了“vbs能调用的系统对象有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbs能调用的系统对象有哪些”这篇文章吧。vbs能调用系统对象:文件系统对象相关: (&quo...
    99+
    2023-06-08
  • linux系统有哪些升级对象
    本篇内容介绍了“linux系统有哪些升级对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.升级一般软件一般来说,升级应用软件是比较简单的...
    99+
    2023-06-12
  • PHP 数组转对象性能调优的技巧有哪些?
    优化 php 数组到对象的转换性能技巧:使用现成的方法(stdclass 类)避免使用复杂的数组缓存转换结果使用 splat 操作符实例化对象池 PHP 数组转对象性能调优技巧 PHP...
    99+
    2024-04-29
    php 对象
  • Windows 系统中的 Go 文件对象有哪些特点?
    作为一种高效、简洁的编程语言,Go 在文件处理方面也有着独特的特点。在 Windows 系统中,Go 文件对象不仅具有高效的读写能力,还能灵活地处理文件属性、权限等信息,下面我们一起来探究一下。 打开文件 在 Go 中,打开文件可以使...
    99+
    2023-10-29
    文件 windows 对象
  • ADO对象有哪些操作以及ADO中主要对象有哪些功能
    ADO对象有哪些操作以及ADO中主要对象有哪些功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  ADO(ActiveXDataObject...
    99+
    2024-04-02
  • java对象的引用有哪些
    本篇内容介绍了“java对象的引用有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java对象的引用reference分为有强引用,软引...
    99+
    2023-06-17
  • Response对象的作用有哪些
    Response对象的作用主要有以下几个:1. 封装HTTP响应:Response对象负责封装HTTP响应的各种信息,包括状态码、头...
    99+
    2023-09-06
    Response
  • ADO.NET的对象有哪些
    这篇文章主要讲解了“ADO.NET的对象有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET的对象有哪些”吧!ADO.NET的对象五个主要的组件,分别是Connection对象...
    99+
    2023-06-17
  • JavaScript中有哪些常用的对象
    本篇内容主要讲解“JavaScript中有哪些常用的对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中有哪些常用的对象”吧! ...
    99+
    2024-04-02
  • 使用HttpServletRequest对象的作用有哪些
    这篇文章将为大家详细讲解有关使用HttpServletRequest对象的作用有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  使用HttpServletRequest可以防止盗链行为...
    99+
    2023-05-31
    httpservletrequest ue
  • JavaScript有哪些系统对话框
    JavaScript中的系统对话框有:1.alert(),警告框;2.prompt(),提示框;3.confirm(),确认框;JavaScript中的系统对话框有以下几种alert()JavaScript中alert()的作用是弹出一个警...
    99+
    2024-04-02
  • jquery对象和js对象的区别有哪些
    本篇内容主要讲解“jquery对象和js对象的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery对象和js对象的区别有哪些”吧! ...
    99+
    2024-04-02
  • win10系统有哪些功能
    这篇文章主要介绍“win10系统有哪些功能”,在日常操作中,相信很多人在win10系统有哪些功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10系统有哪些功能”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-01
  • win7系统功能有哪些
    这篇“win7系统功能有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7系统功能有哪些”文章吧。win7系统功能介...
    99+
    2023-07-01
  • Linux系统下常用的调试工具有哪些
    本文将为大家详细介绍“Linux系统下常用的调试工具有哪些”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Linux系统下常用的调试工具有哪些”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下...
    99+
    2023-06-28
  • jsp作用域对象有哪些
    在JSP中,有以下几种作用域对象:1. Page作用域(page scope):Page作用域是最小的作用域,它只在当前JSP页面中...
    99+
    2023-09-22
    jsp
  • session对象的应用场景有哪些
    Session对象在Web开发中的应用场景有以下几种:1. 用户认证和授权:Session对象可以用来存储用户的认证信息,如用户名、...
    99+
    2023-09-27
    session
  • List对象的比对方法有哪些
    这篇文章将为大家详细讲解有关List对象的比对方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求说明我们在开发过程中,经常需要对比两个List对象的数据,找出新增、删除、更改的条目。典型的情况如...
    99+
    2023-06-03
  • Math对象的方法有哪些
    这篇文章主要介绍“Math对象的方法有哪些”,在日常操作中,相信很多人在Math对象的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Math对象的方法有哪些”的疑惑...
    99+
    2024-04-02
  • javascript支持的对象有哪些
    本篇内容主要讲解“javascript支持的对象有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript支持的对象有哪些”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作