如何查看 COM 对象都有哪些功能?
Posted
技术标签:
【中文标题】如何查看 COM 对象都有哪些功能?【英文标题】:How to view what functions a COM object has?如何查看 COM 对象有哪些功能? 【发布时间】:2021-11-06 06:49:25 【问题描述】:我不太明白什么是组件对象模型。到目前为止,我知道这会在 Python 3.x 中打开 MS Project:
import win32com.client
project = 'SomePath\foo.mpp'
mpp = win32com.client.Dispatch("MSProject.Application")
在此之后,我在哪里可以找到它的功能,例如打开文件、读取其内容、搜索任务等?我试过这样的事情:
print([method_name for method_name in dir(mpp) if callable(getattr(mpp, method_name))])
或
for item in dir(mpp):
print(item)
但这些并没有显示应用程序的所有方法。
我在网上找不到任何关于它的信息,有人可以告诉我如何找出它的可调用函数吗?
【问题讨论】:
没有通用的方法。这取决于对象,但是对于这个,文档是可用的:docs.microsoft.com/en-us/office/vba/api/project.application 当然你必须适应 python Simon 的文档链接是项目对象模型的权威指南。然而,它缺乏例子。幸运的是,这里有很多:SO posts for ms-project tag 并且将 com 部分从 vba/c# 转换为 python 并不难。 这两个都对我有帮助,非常感谢! 【参考方案1】:好吧,使用 Windows SDK 附带的 OleView 等工具,您可以查看类型库。
对于您拥有的确切对象,我可以使用 PowerShell 计算出来,而无需使用 OleView:
$obj = new-object -com "MSProject.Application"
$obj | Get-Member
这样做,它会列出 MSProject.Application 的方法...因为 MSProject.Application 是一个 coclass ProgId。它在 Python 中不起作用。如果您有另一个可以在 PowerShell 中导航到的对象,您可以使用 Get-Member 执行相同的操作
另外,如果你有 Office,你可以在 Excel(或 Word 或...)中打开一个宏窗口,添加对 MS Project 类型库的引用,然后在 Excel 宏窗口中使用对象浏览器查看MS Project 类型库中各种对象的属性和方法。
【讨论】:
以上是关于如何查看 COM 对象都有哪些功能?的主要内容,如果未能解决你的问题,请参考以下文章