在Python中使用COM DLL
我有一个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 个回答
-1
无论你使用什么编程语言,你都会遇到同样的问题。也就是说,如果你用VB(Visual Basic),你也需要注册这个组件。
不过,你可以使用无注册COM来解决这个问题。你需要为你的EXE文件(比如python.exe或者你应用程序的EXE文件名)创建一个清单,这个清单依赖于另一个清单,后者声明了它提供的类、接口和/或类型库。