×

dll typelibinfofromfile guid coclasses 类名

查看DLL的库类名等多种信息

鹭岛小千 鹭岛小千 发表于2021-10-04 16:07:14 浏览819 评论0

抢沙发发表评论

【问题描述】如何查看DLL的以下信息?

库名、类名、GUID(全局唯一标识符)、方法名列表、属性名列表

【小千解答】以查看scrrun.dll为例,借助TLBINF32.DLL的TypeLibInfoFromFile方法。

在VBA编辑界面,依次单击【视图】→【本地窗口】,再按【Ctrl+G】显示“立即窗口”,然后编写如下代码,两次运行。

Sub xqoffice()
    Dim TLI As Object
    Set TLI = CreateObject("TLI.TliApplication")
    Set xqDLL = TLI.TypeLibInfoFromFile("C:\Windows\SysWOW64\scrrun.dll")
    Stop
    Debug.Print "库名:" & xqDLL.Name
    Debug.Print "类名清单:"
    For Each Cls In xqDLL.CoClasses
        Debug.Print Cls.Name
    Next Cls
    Debug.Print "第一个类的相关信息:"
    With xqDLL.CoClasses(1)
        Debug.Print "名称:" & .Name
        Debug.Print "GUID:" & .GUID
        Debug.Print "方法:"
        For Each Mem In .DefaultInterface.Members
            If Mem.InvokeKind = 1 Then    'INVOKE_FUNC
                Debug.Print Mem.Name
            End If
        Next Mem
        Debug.Print "属性:"
        For Each Mem In .DefaultInterface.Members
            If Mem.InvokeKind = 2 Then    'INVOKE_PROPERTYGET
                Debug.Print Mem.Name
            End If
        Next Mem
    End With
End Sub

首次运行后,“本地窗口”显示如下:

50-1.png

继续运行后,结果如下:

50-2.png


打赏码.png


【参考资料】

  1. VBS技术内幕:CreateObject函数

  2. VBS深入CreateObject函数

  3. 获取对象的接口信息(方法/属性/事件)


群贤毕至

访客