我试图与Python一起使用一个COM服务器,它只公开IDispatch接口,并且既没有IDL文件也没有类型库。我有不同方法的文档以及如何使用它们。在
尝试使用win32com包对我来说失败了,因为当没有可用的类型信息时,win32com会回退到假定任何属性访问都是property get或set时,永远不会调用方法。在
也就是说,当我执行以下操作时:
import win32com.client
c = win32com.client.GetActiveObject(server_progid)
c.someServerMethod(arg1, arg2)
win32com试图获取服务器上的someServerMethod属性,完全忽略arg1和arg2。深入研究代码似乎是因为python正在调用self.\uugetattr_uwhich没有arg1,arg2。在
我在寻找解决这个问题的方法:
谢谢!在
你应该能够使用
告诉win32com将其视为方法而不是属性。在
一个可能的解决方案(我目前正在实现)是包装win32的用法com.客户端使用一个代理,该代理使用某种逻辑为每个方法调用调用调用“make”方法。使用here中的代码配方,我将每个不以get_u或set_u开头的属性改为method(只是一个例子,任何允许区分方法属性的启发式方法都可以)。在
相关问题 更多 >
编程相关推荐