gpt4 book ai didi

python - 通过 Python 只能部分访问 COM 类型库

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:29 25 4
gpt4 key购买 nike

我正在尝试编写一些脚本来使用应用程序附带的 COM 类型库来从外部控制它。

但是,我在使用 COM(pythoncom 和 win32com)的 Python 库时遇到了困难:

使用 COM 浏览器,我能够导航以找到我有兴趣使用的类型库的 GUID。

使用 pythoncom,我能够轻松浏览此类型库以查看可用的对象。

>>> import win32com.client
>>> import pythoncom
>>> type_lib_iid = '{12345678-ABCD-EFGH-1234-12341234}'
>>> lib = pythoncom.LoadTypeLib(type_lib_iid, 1, 0)
>>> for index in range(0, lib.GetTypeInfoCount()):
print lib.GetDocumentation(index)[0]
print lib.GetTypeInfo(index).GetTypeAttr().iid

这将返回可用 COM 对象的所有 GUID(抱歉,如果我在屠杀这个词汇)。

奇怪的是,当我浏览类型库时,虽然此调用返回的所有对象都出现在 COM 浏览器中,但在 81 个可用对象中只有 4 个可以调用 Dispatch。其余返回:

'Class not registered.'

我的问题分为两部分:

1) 如何通过 COM 浏览器和上述调用找到对象,而不能使用 win32com.client.Dispatch 调用对象? [注意:有问题的应用程序正在运行。]

2) 我是否使用了错误的功能? dispatch 不正确吗?我承认我发现 Python COM 模块的文档令人困惑,但我没有找到任何现有 COM 对象未被调度的示例,所以我不知道从这里去哪里。此外,可以分派(dispatch)的 4 个对象似乎完全按照文档中的说明工作。

[最后一点:如果我尝试 pythoncom.CoCreateInstance(TypeLibCLSID, None, 1, GUIDofInterfaceObject) 我得到“不支持接口(interface)”。我需要使用的关键接口(interface)是我在这里尝试的 GUID。]

最佳答案

只能使用 Dispatch 直接创建 CoClass 接口(interface)。其他接口(interface)通常是通过向下钻取顶级对象的属性和方法来创建的。如果你在你的类型库上运行 makepy,生成的包装文件将用注释标记 CoClass。

关于python - 通过 Python 只能部分访问 COM 类型库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com