例如,起初我认为括号中的内容是由句点分隔的库和类(例如:"Scripting.Dictionary"
,"Scripting.FileSystemObject"
。但是,当您将它用于Internet Explorer时是"InternetExplorer.Application"
而不是"SHDocVw.InternetExplorer"
。语法是不是标准的,你只需要每次查找一下吗?我会使用早期绑定,但我只是好奇。
答案 0 :(得分:2)
用作CreateObject()
参数的字符串被称为程序化标识符或"ProgId"
。 COM类使用CLSID
标识自己,或者基本上是GUID
。但是,无论何时需要实例化COM对象(顺便说一句是CLSID
)而不必记住并键入FileSystemObject
COM类的{0D43FE01-F093-11CF-8940-00A0C9054228}
,COM允许指定一个ProgId
字符串。
您可以检查HKEY_CLASSES_ROOT\CLSID
注册表项的内容,以查看PC上可用的所有COM类。这是CLSID
课程的FileSystemObject
,显示ProgID
:
OleView或NirSoft ActiveXHelper等工具使查找ProgId
变得更加容易。其他语言要求您跳过箍来创建COM对象。但VB系列语言是" COM意识到"并提供必要的实用程序,以轻松创建和使用COM组件,而不必担心IIDs
,CLSIDs
,Type Libraries
和其他" COM" mumbo jumbo。在VB中,当您添加"Reference"
时,您引用了Type Library
。当您致电CreateObject(<string>)
时,您告诉Windows使用CLSID
ProgId
查找COM类的<string>
。它们只是更简单,更清洁的方式来与COM世界交互。
要(尝试)回答您的问题,ProgId
可以是COM对象的创建者所选择的任何内容。它通常是"<COM Library>.<COM Class>"
,但情况并非总是如此。通常包含版本号。例如,"MSMXL2.DOMDocument.6.0"
包括库和类的版本号。其他时候,根本没有图书馆(例如CreateObject("htmlfile")
)。所以,遗憾的是,这里没有完美的标准。
答案 1 :(得分:0)
这取决于您访问图书馆的方式 注意:这将在Visual Basic或VBScript
中工作fso = CreateObject("Scripting.FileSystemObject")
Scripting是类型库的名称,FileSystemObject是您要为其创建实例的对象的名称。
如果您引用了库,则无需通过脚本库 注意:这只适用于Visual Basic。
Dim fso As New FileSystemObject