如何使用comtypes调用CommMethod?

2024-03-29 11:07:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python和comtypes(对我来说都是新的)调用COM方法(没有参数),但是我得到了一个“异常:访问冲突读取”。当使用win32com时,它可以工作

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

结果:

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

当使用comtypes时,它不起作用,返回“异常:访问冲突读取”

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

Tags: inpyimportclientlibpackageslinesite