ComObject

创建 COM 对象.

ComObj := ComObject(CLSID , IID)

ComObject 本身是一个派生自 ComValue, 但只用于创建或识别 COM 对象.

参数

CLSID

类型: 字符串

要创建的 COM 对象的 CLSID 或可读的 Prog ID.

IID

类型: 字符串

如果省略, 则默认为 "{00020400-0000-0000-C000-000000000046}"(IID_IDispatch). 否则, 指定要返回的接口的标识符. 在大多数情况下, 它是省略的.

返回值

类型: Object

该函数返回一个 COM 包装器对象, 其类型取决于 IID 参数.

IIDClass变体类型描述
IID_IDispatch ComObject VT_DISPATCH (9) 允许脚本使用普通的对象语法来调用对象的属性和方法.
任意其他 IID ComValue VT_UNKNOWN (13) 只提供一个 Ptr 属性, 允许对象被传递给 DllCallComCall.

错误处理

失败时抛出异常, 例如参数无效或对象不支持由 IID 指定的接口.

ComValue, ComObjGet, ComObjActive, ComObjConnect, ComObjArray, ComObjQuery, ComCall, CreateObject (Microsoft Docs)

示例

有关更多的示例列表, 请参阅后面的的论坛主题: https://www.autohotkey.com/forum/topic61509.html.

启动 Internet Explorer 实例, 使其可见并导航到一个网站.

ie := ComObject("InternetExplorer.Application")
ie.Visible := true  ; 此语句在 IE7 中无法正常执行.
ie.Navigate("https://www.autohotkey.com/")

检索桌面当前壁纸的路径.

AD_GETWP_BMP := 0
AD_GETWP_LAST_APPLIED := 0x00000002
CLSID_ActiveDesktop := "{75048700-EF1F-11D0-9888-006097DEACF9}"
IID_IActiveDesktop := "{F490EB00-1240-11D1-9888-006097DEACF9}"
cchWallpaper := 260
GetWallpaper := 4

AD := ComObject(CLSID_ActiveDesktop, IID_IActiveDesktop)
wszWallpaper := Buffer(cchWallpaper * 2)
ComCall(GetWallpaper, AD, "ptr", wszWallpaper, "uint", cchWallpaper, "uint", AD_GETWP_LAST_APPLIED)
Wallpaper := StrGet(wszWallpaper, "UTF-16")
MsgBox "Wallpaper: " Wallpaper