【问题标题】:Using COM DLL from Python在 Python 中使用 COM DLL
【发布时间】:2014-10-05 10:59:13
【问题描述】:

我有一个 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 程序一样实例化它,可以吗?

【问题讨论】:

    标签: python dll com pywin32


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2011-05-05
      • 2012-03-09
      • 2014-10-27
      • 2017-02-15
      • 2012-11-01
      • 1970-01-01
      • 2011-05-31
      • 2012-02-04
      相关资源
      最近更新 更多