Как вызвать COM-метод с использованием comtypes (используя Python) - PullRequest
0 голосов
/ 22 октября 2019

Я использую Python и comtypes (оба новые для меня) для вызова метода COM (без аргументов), однако я получаю «исключение: чтение нарушения доступа». При использовании win32com это работает.

import win32com.client
import pywintypes
result=win32com.client.Dispatch("{9275351B-0F06-366F-A560-933FED81FECF}")
result.AutomationMyType()

Результат:

('text1', 'text2',...,'text99')

При использовании комтипов это не работает, возвращается «исключение: чтение нарушения доступа».

import comtypes
import comtypes.client as cc
tlb_id = comtypes.GUID("{40B0E4AB-2B70-4142-91A3-839CD72EA140}")
cc.GetModule((tlb_id, 1, 0))
obj=cc.CreateObject("ActLifeVBA.VBA.AutomationAktuar")
obj.AutomationMyType()

Результат:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python37\lib\site-packages\comtypes\safearray.py", line 223, in __ctypes_from_outparam__
    return self[0]
  File "C:\Program Files\Python37\lib\site-packages\comtypes\safearray.py", line 214, in __getitem__
    return self.unpack()
  File "C:\Program Files\Python37\lib\site-packages\comtypes\safearray.py", line 260, in unpack
    for d in range(1, dim+1)]
  File "C:\Program Files\Python37\lib\site-packages\comtypes\safearray.py", line 260, in <listcomp>
    for d in range(1, dim+1)]
  File "C:\Program Files\Python37\lib\site-packages\comtypes\_safearray.py", line 97, in SafeArrayGetLBound
    _SafeArrayGetLBound(pa, dim, result)
OSError: exception: access violation reading 0x0000020C5073FFFC
...