栏目分类
热点资讯
中国成人网
你的位置:大桥未久种子 > 中国成人网 > 做爱知识 ComObjQuery()
做爱知识 ComObjQuery()

发布日期:2024-10-20 05:45    点击次数:177

做爱知识 ComObjQuery()

ComObjQuery() [v1.0.96.00+]

查询 COM 对象的接口或工作.做爱知识

InterfacePointer := ComObjQuery(ComObject, [SID,] IID)
参数 ComObject

COM 包装器对象或原始接口指针.

IID

才调为"{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" 的接口标志符 (GUID).

SID

与 IID 才调换取的工作标志符. 概略此参数时, 必须同期概略背面随着的逗号.

香蕉鱼视频在线观看 一般诠释

在此函数使用两个参数时, 它畸形于 IUnknown::QueryInterface. 要是同期指定了 SID 和 IID做爱知识, 那么它会里面查询 IServiceProvider 接口, 然后调用 IServiceProvider::QueryService. 在两种表情中, 复返值为零或到被央求接口的指针. 不息在剧本适度时必须 开释 这种指针.

络续 ObjRelease, ComObjCreate, ComObjGet, ComObjActive, ComObjError 示例
; 示例: 细目对象的类名.

obj := ComObjCreate("Scripting.Dictionary")

MsgBox % "Interface name: " ComObjType(obj, "name")

IID_IProvideClassInfo := "{B196B283-BAB4-101A-B69C-00AA00341D07}"

; 央求到对象的 IProvideClassInfo 接口的指针.
if !(pci := ComObjQuery(obj, IID_IProvideClassInfo))
{
    MsgBox IProvideClassInfo interface not supported.
    return
}

; 调用 GetClassInfo 来得回到 ITypeInfo 接口的指针.
DllCall(vtable(pci, 3), "ptr", pci, "ptr*", ti)

; 调用 GetDocumentation 来得回对象的齐备类型称呼.
DllCall(vtable(ti, 12), "ptr", ti, "int", -1, "ptr*", name, "ptr", 0, "ptr", 0, "ptr", 0)

; 调度 BSTR 指针为可用的字符串.
name := StrGet(name, "UTF-16")

; 开释原始接口指针.
ObjRelease(ti)
ObjRelease(pci)

; 透露类型称呼!
MsgBox % "Class name: " name

vtable(ptr, n) {
    ; NumGet(ptr+0) 复返对象的虚函数表
    ; (简称为 vtable) 的地址. 抒发式的其余部分从
    ; vtable 得回第 n 个函数的地址.
    return NumGet(NumGet(ptr+0), n*A_PtrSize)
}
; 示例:自动化已有的Internet Explorer窗口.

sURL := "https://autohotkey.com/boards/"
if webBrowser := GetWebBrowser()
   webBrowser.Navigate(sURL)
return

GetWebBrowser()
{
    ; 得回到顶级 IE 窗口文档对象的原始指针.
    static msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
    SendMessage msg, 0, 0, Internet Explorer_Server1, ahk_class IEFrame
    if ErrorLevel = FAIL
        return  ; 未找到 IE.
    lResult := ErrorLevel
    DllCall("oleacc\ObjectFromLresult", "ptr", lResult
        , "ptr", GUID(IID_IHTMLDocument2,"{332C4425-26CB-11D0-B483-00C04FD90119}")
        , "ptr", 0, "ptr*", pdoc)
    
    ; 查询 WebBrowserApp 工作. 在这种疏淡情况中,
    ; SID 和 IID 换取, 但不老是如斯.
    static IID_IWebBrowserApp := "{0002DF05-0000-0000-C000-000000000046}"
    static SID_SWebBrowserApp := IID_IWebBrowserApp
    pweb := ComObjQuery(pdoc, SID_SWebBrowserApp, IID_IWebBrowserApp)
    
    ; 开释文档对象指针.
    ObjRelease(pdoc)
    
    ; 复返包装过的可用的 WebBrowser 对象:
    static VT_DISPATCH := 9, F_OWNVALUE := 1
    return ComObject(VT_DISPATCH, pweb, F_OWNVALUE)
}

GUID(ByRef GUID, sGUID) ; 调度字符串为二进制的 GUID 并复返其地址.
{
    VarSetCapacity(GUID, 16, 0)
    return DllCall("ole32\CLSIDFromString", "wstr", sGUID, "ptr", &GUID) >= 0 ? &GUID : ""
}


丁香成人网 成人网有哪些 中国成人网 最新成人网 熟女人妻网