我正在尝试与 Python 一起使用只公开 IDispatch 接口并且既没有 IDL 文件也没有类型库的 COM 服务器。我确实有关于不同方法以及如何使用它们的文档。
尝试使用 win32com 包对我来说失败了,因为似乎当没有可用的类型信息时 win32com 回退到假设任何属性访问是属性获取或设置,而不是方法调用。
也就是说,当我执行以下操作时:
import win32com.client
c = win32com.client.GetActiveObject(server_progid)
c.someServerMethod(arg1, arg2)
win32com 尝试获取服务器上的someServerMethod属性,完全忽略 arg1、arg2。挖掘代码似乎是因为 python 正在调用没有 arg1、arg2 的 self.__getattr__。
我正在寻找解决此问题的方法:
- 一些语法告诉 win32com 我实际上是在调用一个方法;
- 其他一些实际实现此行为的python COM客户端;
- 其他建议,除了明显的“手动将文档转换为类型库”。
谢谢!