如何格式化 Python 值列表以与 COM SAFEARRAY 格式兼容?

问题描述 投票:0回答:0

我有点惊讶以前没有讨论过这个问题。

调用方法(在 C 中)是:

SetValues(BSTR Keyword, SAFEARRAY * Data)

我试过:

handle = win32com.client.Dispatch("My.Application")
vals = (1.1, 2.2, 3.3)
safe_vals = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, vals)
handle.SetValues("PUT_IT_HERE", safe_vals)

这给了我错误:

TypeError: Objects for SAFEARRAYS must be sequences (of sequences), or a buffer object.

如果我只是尝试输入“vals”:

    res = handle.SetValues("PUT_IT_HERE", vals)
  File "<COMObject My.Application>", line 2, in SetValues
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147220988), None)

我假设需要某种转换才能使其与 (SAFEARRAY *) 兼容,但没有人对此非常清楚。

python com safearray
© www.soinside.com 2019 - 2024. All rights reserved.