VB.NET调用VB6 Activex EXE实现PowerBasic和FreeBasic的标准DLL调用

VB6写的ActiveX EXE公共对象是外置进程,因此,尽管它是x86 32位的进程,但可以集成到 VB.NET的x64和x32程序中使用。

VS2022的VB.NET程序,调用ActiveX DLL对象我在上篇笔记中写了

VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库_Mongnewer的博客-CSDN博客

为了简短,调用ActiveX exe就在它上面做修改。

  1. 对填加依赖项的修改

对于Activex DLL注册过的COM在填加引用时是可以在列表中看到的,而Activex EXE方式的COM则需要直接填加 EXE 那个文件,在项目管理器的依赖项中会显示出类的名称。

  1. 有了COM依赖项,Imports 引用就和 Activex DLL一样了,之后建接口也是一样的。
  1. ActiveX EXE的加载

因为Activex EXE是外部程序,使用时必须先加载,不然Imports和new接口没办法工作。想了想就在创建应用时,在它的new里装入吧。

  1. 退出处理

退出实际上不用处理,只是在系统的任务管理器中会留下 Activex EXE 无控制的运行,下次重启系统也就没有了,而且它几乎不占资源,但遇上有人计较就是个不完美的问题。CSDN高人无数,就将博主 ssmi 的原码和版权声明一同贴到FormClosed过程中,让它到系统中找ActiveX EXE进程,然后全部屠杀掉。

    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
        s = Nothing
        '版权声明:   本文为CSDN博主「smmi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
        '原文链接:   https : //blog.csdn.net/smmi/article/details/84277610
        Dim i As Integer
        Dim proc As Process()
        '判断excel进程是否存在
        If System.Diagnostics.Process.GetProcessesByName("MBFMODIEEE").Length > 0 Then
            proc = Process.GetProcessesByName("MBFMODIEEE")
            '得到名为excel进程个数,全部关闭
            For i = 0 To proc.Length - 1
                proc(i).Kill()
            Next
        End If
        proc = Nothing
        '版权声明:   本文为CSDN博主「smmi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
        '原文链接:   https : //blog.csdn.net/smmi/article/details/84277610
    End Sub
  1. 编译 x86还是x64 ?

Activex EXE是外部进程,不是内部线程,它就是个独立的程序,因此,不论是x86编译,还是x64都是可以的。编译完成后,项目EXE文件夹中把所需的DLL考贝进去,打包时同时打进去。

体会:

感觉Activex EXE方式比Activex DLL方式改造老旧更易用,因为灵活性更大一些。

代码链接

https://download.csdn.net/download/weixin_45707491/88244920

相关推荐
rrokoko8 小时前
提取重复数据
vb.net
xwLink199615 小时前
vb.net&cad二开自学笔记9:界面之ribbon
vb.net·cad二次开发
xwLink199618 小时前
vb.net&cad二开自学笔记4:net程序的自动加载
vb.net·cad二次开发
xwLink19962 天前
vb.net&cad二开自学笔记3:启动与销毁
vb.net·cad二次开发
xwLink19962 天前
vb.net&cad二开自学笔记5:ActiveX链接CAD的.net写法
vb.net·cad二次开发
xwLink19962 天前
vb.net&cad二开自学笔记2:认识vs编辑器
vb.net·cad二次开发
专注VB编程开发20年19 天前
VB.NET 取当前项目根命名空间
.net·vb.net·根命名空间
xiaokcehui1 个月前
VB.net进行CAD二次开发(三)
vb.net·cad2020
xiaokcehui1 个月前
VB.net进行CAD二次开发(四)
cad·vb.net
机构师5 个月前
VisaulStudio2022下用VB.net实现socket与西门子PLC进行通讯案例(优化版)
.net·socket·vb.net