如何使用 win32com 处理多个输出参数?
How to handle multiple output parameters with win32com?
我尝试使用签名(.idl 文件)从 com 服务器调用函数:
typedef [v1_enum] enum Mode
{
Mode1,
Mode2
}
Mode;
[id(33)] HRESULT GetPosition
(
[out] double* x,
[out] double* y,
[in] Mode positionMode
);
python 代码如下所示:
import win32com.client
obj = win32com.client.gencache.EnsureDispatch('Server.Object.1')
from win32com.client import constants as c
(x,y) = obj.GetPosition(Mode=c.Mode1)
# I tried also x,y=... x=...
我收到错误消息
pywintypes.com_error: (-2147352562, 'Invalid number of parameters.',
None, None)
在将参数传递给函数或返回单个输出参数时效果很好,例如:
obj.setValue(42)
x = obj.getValue()
如何处理多个输出参数?
问题确实是函数的签名,它被翻译成:
def GetPosition(self, x=pythoncom.Missing, y=pythoncom.Missing, Mode=defaultNamedNotOptArg):
这意味着函数需要像这样调用:
(x,y)=obj.GetPosition(0,0,Mode=c.Mode1)
非常感谢 DS_London 给出正确的提示。
我尝试使用签名(.idl 文件)从 com 服务器调用函数:
typedef [v1_enum] enum Mode
{
Mode1,
Mode2
}
Mode;
[id(33)] HRESULT GetPosition
(
[out] double* x,
[out] double* y,
[in] Mode positionMode
);
python 代码如下所示:
import win32com.client
obj = win32com.client.gencache.EnsureDispatch('Server.Object.1')
from win32com.client import constants as c
(x,y) = obj.GetPosition(Mode=c.Mode1)
# I tried also x,y=... x=...
我收到错误消息
pywintypes.com_error: (-2147352562, 'Invalid number of parameters.', None, None)
在将参数传递给函数或返回单个输出参数时效果很好,例如:
obj.setValue(42)
x = obj.getValue()
如何处理多个输出参数?
问题确实是函数的签名,它被翻译成:
def GetPosition(self, x=pythoncom.Missing, y=pythoncom.Missing, Mode=defaultNamedNotOptArg):
这意味着函数需要像这样调用:
(x,y)=obj.GetPosition(0,0,Mode=c.Mode1)
非常感谢 DS_London 给出正确的提示。