Мне нужно передать список логических значений в COM как VT_ARRAY.
from win32com.client import Dispatch, VARIANT
import pythoncom
api = Dispatch("MyAPI")
controller = api.CreateInterface()
first = VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_BOOL, [True, False, True])
second = VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_BOOL, [True, False, True])
controller.MyMethod(first, second)
C ++ Код COM-интерфейса:
if ( first->vt == ( VT_ARRAY | VT_BOOL ) && second->vt == ( VT_ARRAY | VT_BOOL ) )
{
CComSafeArray<BOOL> first_safe( first->parray ); //fails here
CComSafeArray<BOOL> second_safe( second->parray );
Сбой с исключением COM на стороне python :
pywintypes.com_error: (-2147023170, 'The remote procedure call failed.', None, None)