问题解决了。
类型库具有所需的信息和
this issue
有助于理解所写内容:
def GetConfigurationParams(self, ConfigName=defaultNamedNotOptArg, Params=pythoncom.Missing, Values=pythoncom.Missing):
'Get the parameters for a configuration'
return self._ApplyTypes_(2, 1, (11, 0), ((8, 1), (16396, 2), (16396, 2)), 'GetConfigurationParams', None,ConfigName
, Params, Values)
的第三个元素
self._ApplyTypes_
以下为:
((8, 1), (16396, 2), (16396, 2))
提供了有关所需数据的提示:
-
有3个功能参数。
1: (8, 1)
2: (16396, 2)
3: (16396, 2)
-
对于每个参数,第一个元素是数据类型:
(参见
https://en.wikipedia.org/wiki/Variant_type_(COM)
用于VarType、HEX和Propvariant上的参考)。
特殊情况:
16396 = 0x400c = VT_BYREF
但是VT_BYREF必须出现在VARIANT中,因此它
VT_VARIANT | VT_BYREF
(必须阅读
this
和
this
详细到Unerstand)
-
对于每个参数,第二个元素指示其用途:
1: input
2: output
3: both (3 = 1 | 2)
所以有效的解决方案是
config = win32com.client.VARIANT(pythoncom.VT_BSTR, config)
keys = win32com.client.VARIANT(pythoncom.VT_VARIANT | pythoncom.VT_BYREF, [])
values = win32com.client.VARIANT(pythoncom.VT_VARIANT | pythoncom.VT_BYREF, [])
result = configManager.GetConfigurationParams(config, keys, values)
result
返回True和
keys
&
values
以达到预期的结果。