Python 3.x 将SAFEARRAY值传递给COM客户端

Python 3.x 将SAFEARRAY值传递给COM客户端,python-3.x,com,win32com,safearray,Python 3.x,Com,Win32com,Safearray,我试图通过win32com.client模块自动化一个工具,该模块期望输入采用以下格式,如果特定于MATLAB,则如下所示的格式 HRESULT StaticStokesParameters([in] SAFEARRAY(double) newVal) 我不知道SAFEARRAY类型代表什么。我曾尝试用python创建一个2D数组,但一直收到以下错误: pywintypes.com_error: (-2147352571, 'Type mismatch.', None, 1) 我可以毫无问题

我试图通过win32com.client模块自动化一个工具,该模块期望输入采用以下格式,如果特定于MATLAB,则如下所示的格式

HRESULT StaticStokesParameters([in] SAFEARRAY(double) newVal)
我不知道SAFEARRAY类型代表什么。我曾尝试用python创建一个2D数组,但一直收到以下错误:

pywintypes.com_error: (-2147352571, 'Type mismatch.', None, 1)
我可以毫无问题地读出这些值,但是当我将相同的值赋回SET参数时,它就不能这样做了

EngineMgr = win32com.client.Dispatch("EngineMgr")
Engine = EngineMgr.OpenEngine(0)
d_array = Engine.StaticStokesParameters
print(d_array)
**(-1.0, 0.0, 0.0) # Output of Print Statement**
Engine.StaticStokesParameters = d_array
**Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
Engine.StaticStokesParameters = d_array
File "C:\Users\ashes\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 549, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
pywintypes.com_error: (-2147352571, 'Type mismatch.', None, 1)**
EngineMgr=win32com.client.Dispatch(“EngineMgr”)
引擎=引擎组打开引擎(0)
d_阵列=发动机静态冲程参数
打印(d_数组)
**(-1.0,0.0,0.0)#打印语句的输出**
Engine.StaticStokesParameters=d_阵列
**回溯(最近一次呼叫最后一次):
文件“”,第1行,在
Engine.StaticStokesParameters=d_阵列
文件“C:\Users\ash\Anaconda3\lib\site packages\win32com\client\dynamic.py”,第549行,位于\uuu setattr中__
self._oleobj_uj.Invoke(entry.dispid,0,Invoke_类型,0,值)
pywintypes.com_错误:(-2147352571,“类型不匹配”,无,1)**

通过导入下面显示的模块实现了这一点

from win32com.client import VARIANT
import pythoncom

sop= Engine.StaticStokesParameters
Engine.StaticStokesParameters = VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8,sop)

SAFEARRAY是一种COM数组。win32com本机应支持SAFEARRAYs,google在“SafeArrayWin32com python”上支持SAFEARRAYs