VB6模拟生成已存在的activexDll控件

By admin at 2022-08-02 • 0人收藏 • 574人看过

起因 : 手头有一款软件 , 里面调用了用vb6生成的一个activexDll控件, 控件里市一些基础的通信功能初始化 , 考虑用替代的方法把这个软件的通信设备改成我自己手头有的设备, 于是爆发了这个念头.

因为是activex控件, 需要Regsvr32来注册到系统里, 那么要替换它, 就要生成和它一样的guid和iid, 名称和方法函数一样, 只需要修改函数内部的程序, 来改为自己的设备即可.


我对vb6不熟悉 , 但是考虑到vb写activex比c++简单不少, 从0开始做个笔记.

image.png

image.png

image.png


image.png

输入代码:

Public varDemo1 As Boolean

Function fun1(ByVal p1 As String) As String
    fun1 = p1
End Function

image.png

image.png

可以看到, 现在activex已经创建好了, 而且里面的函数和全局变量也是我们设置的.

但是, 如果我们是要替换之前的dll的, 那么我们还需要设置GUID和IID一致, 那么设置二进制兼容即可.

image.png

只要你设置的函数和之前的一致, 就不会弹出错误提示.


但是, 我要替换的这个里面用到了 vb的 [ 继承 Implements ] 功能的接口, 那么还需要进一步研究下这个继承.


按照提示, 我们添加好新类和继承.

image.png

重命名为ICard

image.png

添加代码: 注意继承的写法(我是依葫芦画瓢) , 就是 接口名_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 , 就记录这么多.

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...