Windows下使用Python调用com组件

Python for Win32 Extensions HelpWindows下使用Python调用com组件
转python—用Python实现COM对象
python中使用Com组件说明
Quick Start to Client side COM and Python
生成的Python COM支持

生成的Python COM支持
此文件描述了Python COM扩展如何支持“生成的文件”。此处包含的信息适用于专家Python用户以及需要利用支持的高级功能的人员。快速入门客户端COM文档中提供了更多常规信息。

介绍
生成的Python COM支持意味着.py文件存在于特定COM对象后面。此.py文件由COM类型库中的生成过程创建。

本文档讨论了.py文件创建过程。

设计目标
主要的设计目标是Python程序员不需要了解他们希望使用的类型库。他们不需要知道使用类型库的特定Python模块的名称。COM使用IID,版本和LCID来标识类型库。因此,Python程序员只需知道这些信息即可获得Python模块。

如何生成支持文件
支持文件可以由makepy实用程序“脱机”生成,也可以在自定义Python代码中生成。

使用makepy在很多方面都要简单得多 - 你只需选择类型库就可以了!在快速启动客户端的COM文件描述了这一过程。

但是,您通常希望使用代码来确保已处理类型库。本文档描述了该过程。

用法
win32com.client.gencache模块实现了所有功能。如上所述,如果您希望从代码生成支持,您需要知道类型库的IID,版本和LCID。

定义了以下功能。其使用的最佳示例可能是Pythonwin OCX演示和COM测试套件(特别是testMSOffice.py)

请注意,gencache.py文件支持从命令行运行,并提供一些用于管理缓存的实用程序。运行该文件以查看使用选项。

使用makepy来帮助生成运行时
makepy支持“-i”选项,以打印有关类型库的信息。当您选择类型库时,makepy将打印出您不能粘贴到应用程序中的2行代码。这将允许您的模块在运行时生成makepy .py文件,但只需要几秒钟!

win32com.client.gencache函数
def MakeModuleForTypelib(typelibCLSID,lcid,major,minor,progressInstance = None):
生成对类型库的支持。

给定类型库的IID,LCID和版本信息,生成并导入必要的支持文件。

返回

Python模块。没有例外。

PARAMS

typelibCLSID
类型库的IID。

主要的
Integer主要版本。

minor
Integer minor版本。

lcid
库的整数LCID。

progressInstance
用作进度指示器的类实例,或者使用默认GUI的实例。 

def EnsureModule(typelibCLSID,lcid,major,minor,progressInstance = None):
确保为类型库加载Python支持,并在必要时生成。

给定类型库的IID,LCID和版本信息,检查并在必要时生成,然后导入必要的支持文件。

返回:

Python模块。在生成过程中没有捕获异常。

PARAMS

typelibCLSID
类型库的IID。

主要的
Integer主要版本。

minor
Integer minor版本。

lcid
库的整数LCID。

progressInstance
用作进度指示器的类实例,或者使用默认GUI的实例。 

 

def GetClassForProgID(progid):
获取程序ID的Python类

给定一个程序ID,返回一个包装COM对象的Python类

返回

Python类,如果没有可用的模块,则为None。

PARAMS

progid
A COM ProgramID或IID(例如,“Word.Application”)

 

def GetModuleForProgID(progid):
获取程序ID的Python模块

给定一个程序ID,返回一个Python模块,其中包含包装COM对象的类。

返回

Python模块,如果没有可用的模块,则为None。

PARAMS:

progid
A COM ProgramID或IID(例如,“Word.Application”)

 

def GetModuleForCLSID(clsid):
获取CLSID的Python模块

给定一个CLSID,返回一个Python模块,其中包含包装COM对象的类。

返回

Python模块,如果没有可用的模块,则为None。

PARAMS

progid
A COM CLSID(即,不是描述)

 

def GetModuleForTypelib(typelibCLSID,lcid,major,minor):
获取类型库ID的Python模块

返回

导入的Python模块,否则为None

参数:

typelibCLSID
类型库的IID。

主要的
Integer主要版本。

minor
Integer minor版本

lcid
库的整数LCID。
;