gpt4 book ai didi

Python win32 com : how to handle 'out' parameter?

转载 作者:太空狗 更新时间:2023-10-30 00:37:34 27 4
gpt4 key购买 nike

我需要访问具有以下接口(interface)定义 (idl) 的第三方 COM 服务器:

interface IDisplay : IDispatch
{
HRESULT getFramebuffer (
[in] ULONG aScreenId,
[out] IFramebuffer * * aFramebuffer,
[out] LONG * aXOrigin,
[out] LONG * aYOrigin );
};

如您所见,它通过 [out] 参数修饰符返回 3 个值。如何通过 python win32 COM api 处理这个问题?例如,我创建一个对象并从中获取 IDisplay:

object = win32com.client.Dispatch( "VirtualBox.VirtualBox" )
display = object.display

如何调用 display.getFrameBuffer() 使其工作?我尝试了不同的方法,但第二个参数总是“类型不匹配”([out] for IFrameBuffer)

最佳答案

既然这些都是输出参数,你就不能简单地做下面的事情吗?

Framebuffer, XOrigin, YOrigin = display.getFrameBuffer(ScreenId)

Python Programming on Win32 Chapter 12 Advanced Python and COM 中有一些很好的引用资料

并且它们表明语法应该像上面那样。他们还提到使用COM 对象的 MakePy:

使用 MakePy 有很多充分的理由:(从书中复制)

  • 自动化对象的 Python 接口(interface)对于 MakePy 模块支持的对象来说速度更快。

  • 类型库定义的任何常量都可供 Python 程序使用。我们将在本章后面更详细地讨论 COM 常量。

  • 对高级参数类型的支持要好得多,具体来说,COM 声明为 BYREF 的参数只能与 MakePy 支持的对象一起使用。我们将在本章后面讨论传递参数。

关于Python win32 com : how to handle 'out' parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com