使用Python的COM DLL

时间:2014-08-12 11:33:16

标签: python dll com pywin32

我有一个DLL,它是Pastel Partner会计系统的SDK。使用Dependency Walker我可以看到DLL有以下方法:DllRegisterServer,DllUnregisterServer,DllGetClassObject

在库中出现了一个示例VB程序,它引用了DLL并将其实例化为:

Dim SDK As New PasSDK.PastelPartnerSDK

我能从python中使用这个库的唯一方法是在Windows上注册它:

regsvr32 PasSDK.dll

然后在python中使用它:

import win32com.client
sdk = win32com.client.Dispatch("PasSDK.PastelPartnerSDK")
sdk.SetLicense(...)
etc...

但是,有没有办法直接使用这个库而不先注册它?类似的东西:

from ctypes import *
sdk = cdll.LoadLibrary('PasSDK.dll')

当我这样做时,我可以看到sdk.DllGetClassObject是一个函数,但是我如何像VB程序一样实例化它,是否可能?

1 个答案:

答案 0 :(得分:0)

无论您使用何种语言,您都会发现同样的问题。也就是说,使用VB,您也必须注册该组件。

但是,您可以使用registration free COM来实现此目的。为EXE创建一个清单(例如python.exe或您的应用程序的EXE名称),该清单依赖于声明它提供的类,接口和/或类型库的清单。