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

相关推荐
課代表3 天前
VB.NET 与 C# 文件操作文本到二进制文件的读写
c#·二进制文件·vb.net·streamwriter·文本文件·读写·streamreader
VB.Net12 天前
VB.Net循序渐进(第二版)
开发语言·.net·vb.net
专注VB编程开发20年13 天前
B.NET编写不阻塞UI线程的同步延时
ui·.net·vb.net·doevents
专注VB编程开发20年14 天前
VB.NET2003和VB2008可以导入VB6项目
.net·vb.net·vb6·vb2008
专注VB编程开发20年1 个月前
vb.net编写DDE(Dynamic Data Exchange)服务器
运维·服务器·github·vb.net·dde
专注VB编程开发20年1 个月前
vb.net COM DLL 示例,实现了所有 VB6 X86 数据类型的对应
开发语言·前端·vb.net·com·vb6·activex dll
专注VB编程开发20年1 个月前
c#vb.net动态创建二维数组
windows·c#·vb.net·二维数组
专注VB编程开发20年3 个月前
IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL
c++·windows·microsoft·c#·vb.net
专注VB编程开发20年3 个月前
探索VB.NET中的贝塞尔Bezier曲线绘制技巧
图像处理·windows·.net·vb.net
专注VB编程开发20年4 个月前
VB.NET,C#在线程中修改UI的安全操作
ui·c#·.net·vb.net