4

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にかなり慣れていないので、ここからどこに行くべきか本当にわかりません。このエラーの原因と回避方法を教えてください。

4

0 に答える 0