Я использую 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