python vb6 com_有什么“窍门”来构建vb6dll以便Python使用它?

我有一个VB6程序。它是编译的(没有可构建的源代码),由一个.EXE和几个.dll组成。在

我创建了一个简单的Python脚本来调用库中的一些公共方法。不幸的是,Python中没有可用的方法,或者我没有正确地调用它们。在

代码:from ctypes import *

test = windll.LoadLibrary("C:/.../ComDlg32.ocx")

print test

print test.DLLGetDocumentation

输出:

^{pr2}$

我对上面显示的结果没问题。它比我运行相同的代码并尝试使用我们自己的dll时提供了更多的信息。我认为Comdlg32.ocx是供应商提供的控件。在

当我使用一个毫无疑问存在于DLL中的方法对我们自己的DLL运行相同的代码时,我得到的结果是:Traceback (most recent call last):

File "C:/.../XYZ123.py", line 11, in

print test.Init

File "C:\...\lib\ctypes\__init__.py", line 366, in __getattr__

func = self.__getitem__(name)

File "C:\...\lib\ctypes\__init__.py", line 371, in __getitem__

func = self._FuncPtr((name_or_ordinal, self))

AttributeError: function 'Init' not found

Process finished with exit code 1

上面的结果来自EXE,但是DLL返回相同的结果,减去方法名。在

我尝试使用DUMPBIN和/exports选项。它没有向我展示任何公开的方法。DUMPBIN是我如何在OCX中找到{}。在

还有什么我可以尝试调用vb6dll中的方法吗?VB6项目是否需要使用特定的开关来编译,以便可以从Python调用公共方法?如何判断/验证VB6的编译方式是否超出了允许方法可调用的程度?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值