# ComObjCreate

创建 COM 对象.

    ComObject := ComObjCreate(CLSID , IID)

## 参数

CLSID

  类型: 字符串

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

IID

  类型: 字符串

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

## 返回值

类型: ComObject

该函数返回一个 COM 包装器对象.

如果省略了 IID 或标识了 IDispatch 接口, 则包装对象的类型为 VT_DISPATCH(9), 脚本可以使用正常的对象语法调用对象的属性和方法. 否则, 包装对象的类型为 VT_UNKNOWN(13)。在这两种情况下, ComCall 都可以用来调用原生接口方法.

## 错误处理

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

## 相关

ComObject, ComObjGet, ComObjActive, ComObjConnect, ComObjArray, ComObjQuery, ComCall, CreateObject (MSDN)

## 示例

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

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

    ie := ComObjCreate("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 := ComObjCreate(CLSID_ActiveDesktop, IID_IActiveDesktop)
    wszWallpaper := BufferAlloc(cchWallpaper * 2)
    ComCall(GetWallpaper, AD, "ptr", wszWallpaper, "uint", cchWallpaper, "uint", AD_GETWP_LAST_APPLIED)
    Wallpaper := StrGet(wszWallpaper, "UTF-16")
    MsgBox "Wallpaper: " Wallpaper

dftg