Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在COM对象中使用结构_Python_Com - Fatal编程技术网

Python 如何在COM对象中使用结构

Python 如何在COM对象中使用结构,python,com,Python,Com,我正在编写一个python脚本,它调用COM对象来操作相机。在编写脚本时,我遇到了一个问题,“如何使用COM对象中定义的结构” 例如,在OLE/COM对象查看器中,其中一个结构是 typedef [uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), version(1.0), helpstring("image unit")] struct tagUDT_ImageUnit { unsigned char* pData; long data_l

我正在编写一个python脚本,它调用COM对象来操作相机。在编写脚本时,我遇到了一个问题,“如何使用COM对象中定义的结构”

例如,在OLE/COM对象查看器中,其中一个结构是

typedef [uuid(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX), version(1.0), helpstring("image unit")]
struct tagUDT_ImageUnit {
    unsigned char* pData;
    long data_len;
} UDT_ImageUnit;
其中一个API使用这个结构

HRESULT GetImage(
            [in] UDT_ImageUnit* pImageUnit,
            [in] UDT_ImageUnit* pWhite,
            [out, retval] long* ret);

如果使用Python,如何调用此结构?谢谢

Python是否依赖自动化(
IDispatch
)来访问COM?IDispatch不支持结构,即使COM通常支持。是。但是我们可以使用win32com.client.Record创建一个COM_记录来访问结构。例如,objCOM=win32com.client.Dispatch(ProgID)objRecord=win32com.client.Record(Struct,objCOM)。但是,如果存在一个指示符,则会报告两个错误,-当使用结构的UUID时,它报告ValueError(“结构“%s”未在模块“%s”中定义)((名称,包))-使用结构名称时,它会报告“com_错误:(-2147319783,“旧格式或无效类型库”,无,无)