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

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

起因 : 手头有一款软件 , 里面调用了用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 , 就记录这么多.

登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
谢谢合作!

本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...