Windows下使用Python调用com组件

1、下载pywin32
下载地址:点击下载
根据Python版本号下载对应的版本,注意:这里的32位和64位指的是Python,而不是操作系统。
安装过程中会检测本机已安装的Python,如果找不到,就是pywin32的版本下错了。
安装完成后,会在Python的根目录下的/Lib/site-packages/下生成win32、win32com和win32comext三个文件夹。里面都有Demos,很适合入门。

2、生成com组件对应的.py文件
双击/win32com/client/目录中 的makepy.py,会弹出当前机器中的所有com组件,如下图所示:
Windows下使用Python调用com组件_第1张图片
双击目标com组件,在/win32com/gen_py/目录下会生成该组件对应的.py文件。

3、调用com组件
代码中import win32com.client,并使用win32com.client.Dispatch()或者win32com.client.DispatchWithEvents()取的com组件中的类对象。
Dispatch()只有一个参数,为需要创建的类名。在生成.py文件中,可以找到需要创建的类对应的类名,例如:

如果要创建EloamGlobal类对象,该参数应该为”EloamGlobal.Instance.1”。
如果该com组件有回调事件,需要使用DispatchWithEvents(),该函数有两个参数,第一个参数与Dispatch()相同,第二参数为自定义的类名。例如:

class EloamGlobalEvents:
    def OnDevChange(self, type, idx, dbt):
        pass
    def OnIdCard(self, ret=pythoncom.Empty):
        pass

第二参数应该EloamGlobalEvents,该类需要实现的方法在生成的.py中的注释中。
如果需要传递参数到EloamGlobalEvents中,可以把EloamGlobalEvents定义为内部类,在EloamGlobalEvents中就能访问外部类的变量了。

你可能感兴趣的:(Python)