VB6模拟生成已存在的activexDll控件
By
admin
at 2022-08-02 • 0人收藏 • 574人看过
起因 : 手头有一款软件 , 里面调用了用vb6生成的一个activexDll控件, 控件里市一些基础的通信功能初始化 , 考虑用替代的方法把这个软件的通信设备改成我自己手头有的设备, 于是爆发了这个念头.
因为是activex控件, 需要Regsvr32来注册到系统里, 那么要替换它, 就要生成和它一样的guid和iid, 名称和方法函数一样, 只需要修改函数内部的程序, 来改为自己的设备即可.
我对vb6不熟悉 , 但是考虑到vb写activex比c++简单不少, 从0开始做个笔记.
输入代码:
Public varDemo1 As Boolean Function fun1(ByVal p1 As String) As String fun1 = p1 End Function
可以看到, 现在activex已经创建好了, 而且里面的函数和全局变量也是我们设置的.
但是, 如果我们是要替换之前的dll的, 那么我们还需要设置GUID和IID一致, 那么设置二进制兼容即可.
只要你设置的函数和之前的一致, 就不会弹出错误提示.
但是, 我要替换的这个里面用到了 vb的 [ 继承 Implements ] 功能的接口, 那么还需要进一步研究下这个继承.
按照提示, 我们添加好新类和继承.
重命名为ICard
添加代码: 注意继承的写法(我是依葫芦画瓢) , 就是 接口名_xxx
Implements Itest Property Get Itest_varDemo1() As Boolean End Property Property Let Itest_varDemo1(ByVal RHS As Boolean) End Property Function Itest_fun1(ByVal p1 As String) As String End Function
然后生成就可以了.
再写个vb里面的public枚举写法:
Public Enum CardDir 负 = 2 正 = 1 End Enum
这样生成的dll里面就带了枚举变量了.
ok , 就记录这么多.
登录后方可回帖