使用win32com.client.gencache.EnsureDispatch时输入不匹配错误

时间:2012-11-01 13:40:45

标签: python com

我尝试使用win32com模块与专有应用程序的COM接口进行交互。我可以使用动态代理(win32com.client.Dispatch)连接到界面,这似乎有效。但是,如果我可以使用静态代理,那将非常有用,尤其是因为它填充了help()页面。

我可以与动态代理正常交互:

>>> import win32com.client
>>> aqt = win32com.client.Dispatch("Aquator.Application")
>>> db = aqt.LoadDatabase(Folder=r"D:\Shared", Name="AquatorExcel.mdb")
>>> db.Name
u'D:\\Shared\\AquatorExcel.mdb'
>>> db.GetProjectList()
(1, (3,), (u'A simple model',))

但是当我使用使用EnsureDispatch或makepy脚本生成的静态代理时,我收到此错误:

>>> import win32com.client
>>> aqt = win32com.client.gencache.EnsureDispatch("Aquator.Application")
>>> db.Name
u'D:\\Shared\\AquatorExcel.mdb'
>>> db = aqt.LoadDatabase(Folder=r"D:\Shared", Name="AquatorExcel.mdb")
>>> db.GetProjectList()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Pythonxy\Pythonxy 2.7\Python27\lib\site-packages\win32c
om\gen_py\AE9A7F2A-5DD7-4658-B55C-216CAD680889x0x4x3\_Database.py", line 70, in
GetProjectList
    , NameList)
  File "C:\Program Files\Pythonxy\Pythonxy 2.7\Python27\lib\site-packages\win32c
om\client\__init__.py", line 456, in _ApplyTypes_
    self._oleobj_.InvokeTypes(dispid, 0, wFlags, retType, argTypes, *args),
pywintypes.com_error: (-2147352571, 'Type mismatch.', None, 1)

我对COM一般都很新,所以我真的不知道从哪里开始。导致此错误的原因是什么,我该如何避免?

0 个答案:

没有答案