有没有办法从对象库二进制文件中提取函数/属性数据(例如,通常位于C:\Program Files\Microsoft Office\Office14\MSACC.OLB
的Microsoft Access对象14.0库)?
我对实现细节不感兴趣,我只想提取公共接口 - 这就是:
Class: TextBox
Properties:
Property Get BackColor() As Long
Property Let BackColor(value As Long)
... (etc)
Functions:
Sub Move(Left, [Top], [Width], [Height])
... (etc)
Events:
Event AfterUpdate()
Event BeforeUpdate(Cancel As Integer)
... (etc)
确切的格式并不重要 - 我只需要以任何格式对这些数据进行文本转储(然后我会在其周围编写一个程序来解析它)。在C ++世界中,这基本上是头文件的摘录。
据推测,这是VBE中的对象资源管理器已经完成的(以及自动完成,以及任何其他能够读取*.olb
文件的程序),遗憾的是我甚至不知道从哪里开始(谷歌搜索) "从olb文件中提取" /"读取olb文件"没有产生任何有用的结果)。有人可以提供任何建议吗?
答案 0 :(得分:1)
您可以使用PowerShell轻松完成此操作。语法是:
New-Object -ComObject <com object>
要列出Excel.Application
中的所有媒体资源,我们会使用Get-Member
:
New-Object -ComObject Excel.Application | Get-member
要在文本文件中导出列表:
New-Object -ComObject Excel.Application | Get-member | Format-Table -Wrap -Autosize | Out-File list.txt
COM对象已在HKEY_LOCAL_MACHINE\SOFTWARE\Classes
get-ChildItem "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.*" | foreach-object {New-Object -ComObject $_.pschildname | Get-member | Format-Table -Wrap -Autosize | Out-File $($_.pschildName + ".txt") }
此命令将列出名称以Excel.
开头的所有COM对象,并在名为<com object>.txt
的文件中打印其各自的属性。