用VB编写.DLL动态链接库文件

合集下载

(原创)VS2019VB如何生成DLL文件,调用DLL

(原创)VS2019VB如何生成DLL文件,调用DLL

(原创)VS2019VB如何⽣成DLL⽂件,调⽤DLL ⼀。

⽣成DLL1.打开VS2019,--->"创建新项⽬"------>"类库(NET Framework)---->下⼀步2. 输⼊项⽬名称:bell,3. 输⼊保存位置:D:\4. 点击右下⽅“创建”5.输⼊如下代码:Public Class LearnDLLFunction ABC()ABC = "你好!我学学怎么建⽴DLL⽂件,并怎么调⽤。

"End FunctionEnd Class5.按F5或启动------> "确定"6.这时,在如下⽂件夹中就⽣成了:D:\BELL\bin\Debug\BELL.dll⼆.调⽤dll⽂件1.在vs2019中新建window窗体应⽤程序2. 输⼊项⽬名称:WindowsApp13. 输⼊保存位置:D:\4. 点击右下⽅“创建”5.在窗体Form1中,添加Textbox1控件:6.项⽬----添加引⽤7. 浏览 D:\BELL\bin\Debug\BELL.dll---->添加8.在BELL.DLL前打对号----->确定9.双击Form1窗体,在代码页输⼊⼀下代码:Public Class Form1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadDim Goodmood As New BELL.LearnDLLTextBox1.Text = goodmood.ABCEnd SubEnd Class10,编译运⾏。

轻松编写VB.NET.DLL动态链接库文件_开发平台子站_技巧_IT专家网

轻松编写VB.NET.DLL动态链接库文件_开发平台子站_技巧_IT专家网

轻松编写.DLL动态链接库文件_开发平台子站_技巧_IT专家网大家知道吗?VB一般可以生成两种特殊的DLL,一个是ActiveX DLL和ActiveX Control(*.ocx)。

这两种DLL都是VB支持的标准类型。

这里主要就怎样编写 .DLL动态链接库文件分析讲解。

NewViewStudio的意见:创建 .DLL只是COM组件,无法作为输出函数的DLL,其实这只是个错误的说法。

其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。

VB 编译文件实际上采取了两次编译的方法,首先是调用C2.exe产生*.OBJ文件,然后调用Link.EXE连接。

如果在LINK的时候添加EXPORT 选项,实际上是可以输出函数的。

但是,在VB的工程选项中将这些屏蔽了。

而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无法手动通过 Link来创建我们需要的DLL了。

不过我找到一个比较龌鹾的变通的方法,就是先创建一个Exe工程,在Form_Load事件里面写下面的语句:复制内容到剪贴板 .DLL程序代码Sub Main If MsgBox("哈哈", vbOKCancel) = vbOK Then Shell "link2.exe " & Command$ End IfEnd Sub然后编译为LinkTemp.EXE,接下来将LINK.EXE改名为Link2.exe,将LinkT emp.EXE改名为Link.EXE。

这样在VB调用Link.EXE时会弹出对话框,处理就会中断。

这时就可以有机会将OBJ文件拷贝出来了。

然后我创建了一个ActiveX DLL工程,在这个工程里面添加一个Module并创建一个Public函数mathadd:复制内容到剪贴板程序代码Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long mathadd = a + bEnd Function编译这个工程,在Link的时候就会中断。

在vb中生成dll文件并且调用的方法.

在vb中生成dll文件并且调用的方法.

在vb中生成dll文件并且调用的方法.一、DLL制作1.打开新建工程2.选择“Active DLL”,单击“打开”按钮。

3.单击打开按钮后,系统在工程中添加一类模块。

4.为方便对DLL的引用可以改一下名称,如将类模块的名称改为Fraction。

5.在本类模块中添加代码如下。

Option ExplicitPublic NumPublic DenPublic Sub Add(NUm2, Den2)Num = NUm2 + Den2End SubPublic Sub Sbt(NUm2, Den2)Num = NUm2 - Den2End SubPublic Sub Mul(NUm2, Den2)Num = NUm2 * Den2End SubPublic Sub Div(NUm2, Den2)Num = NUm2 / Den2End Sub6.为与其他工程相区别,可将本工程命名为“Math”。

7.生成DLL文件。

二、DLL引用1.建立一个普通窗体。

2.添加引用。

3.在程序中添加以下代码。

Option ExplicitPublic Frac As New Fraction Private Sub Command1_Click() Frac.Add Val(Text1.Text), Val(Text2.Text) Text3.Text = Frac.NumEnd SubPrivate Sub Command2_Click() Frac.Sbt Val(Text1.Text), Val(Text2.Text) Text3.Text = Frac.NumEnd SubPrivate Sub Command3_Click() Frac.Mul Val(Text1.Text), Val(Text2.Text) Text3.Text = Frac.NumEnd SubPrivate Sub Command4_Click() Frac.Div Val(Text1.Text), Val(Text2.Text) Text3.Text = Frac.NumEnd SubPrivate Sub Command5_Click()Text1 = ""Text2 = ""Text3 = ""End Sub 4.运行程序。

VB开发DLL

VB开发DLL

在动态链接技术中,模块和程序是分离的,模块独立于程序而存在于另一个分离的dll 文件中,这个dll 文件是动态链接到程序中的。

文件是动态链接到程序中的。

那如何在vb 中编写一个DLL 程序呢?程序呢?首先,新建一个工程,然后先中“Ac veX Dll ”工程。

”工程。

然后开始编辑,往程序中添加你需要的部件和控件。

然后开始编辑,往程序中添加你需要的部件和控件。

编辑完成后,保存工程,工程一般是以“.vbp ”文件保存,定义的类以“.cls ”和“.vbw ”文件保存,窗体以“.frm ”文件保存,添加的模块一“.bas ”文件保存……。

接着选择“文件”菜单,弹出下拉框,选中“生成.dll ”选项,它就会在上面弹出一个进度条“正在生成.dll 文件”。

生成以后是一个有好象齿轮状的图标。

生成以后是一个有好象齿轮状的图标。

当你需要在其他的程序中调用这个dll 的时候,需要在系统中注册一下,具体的过程是开始->运行->打开”C:”C:\WINDOWS\system32\\WINDOWS\system32\\WINDOWS\system32\regsvr32.exe”regsvr32.exe”,然后找到你要注册的控件的路径,添加在regsvr32.exe 的后面。

的后面。

如果你要引用,就开一个“标准EXE ”工程,然后在“工程”选项中,单击“引用”,找到你刚才的“.dll ”的文件名,在前面的复选框中打勾,就可以引用你刚才在那里面写的方法等。

方法等。

Public Func on DllMain(hinstDLL As Long, // long 类型包含dll 的instance handle 句柄. 也是dll 的模块句柄的模块句柄 fdwReason As Long, // 常数标识,入口点为何被调用常数标识,入口点为何被调用lpwReserved As Long //long 类型提供关于类型提供关于 DLL_PROCESS_ATTACH(DETACH)的信息的信息 ) As BooleanfdwReason 通常的取值通常的取值DLL_PROCESS_ATTACH (1)进程装载了dll ,每进程初始化要执行。

将VBA代码编译封装成为DLL动态链接库方法

将VBA代码编译封装成为DLL动态链接库方法

将VBA代码编译封装成为DLL动态链接库方法在OFFICE中使用VBA虽然方便,并且功能强大,但是VBA在代码的保护上却存在着缺陷。

如果不对VBA工程设置密码保护,代码很容易被人浏览乃至窃取。

而且即使设置了密码保护,也很容易被人破解。

因此,要想真正保护VBA代码,要想让别人无法或难于破解您的VBA代码,那么,我们可以将VBA代码编译成为DLL动态链接库,也就是封装成为DLL的意思,下面是与此相关的方法,希望对您有所帮助。

一、为什么要编译成为DLL我们知道,Visual C++、Visual Basic和C++ Builder以及Delphi等编译器所编译出来的程序不容易被人破解(相对来说),这是因为代码被编译成了可执行文件或者动态链接库文件。

那么,我们是否可以将VBA代码封装到动态链接库文件中,然后用Word调用呢?回答是肯定的。

而且这样做还有一个好处,即可以加快代码的运行速度。

二、将VBA代码封装成动态链接库假如我们已经写好了一个VBA工程,而且运行无误。

①建立VB工程及一般性操作首先,我们需要两种工具,其中当然包括Microsoft Word,另外一种是Microsoft Basic 6.0。

打开Microsoft Basic 6.0,在“新建工程”中选取“ActiveX DLL”,新建一个工程。

在属性窗口中将工程名改为VBAPrj,类模块名改为VBACls。

然后在“工程”菜单下打开“引用”,选取“Microsoft Office 11.0 Object Library”——这一步很是关键,切不可遗漏,然后保存工程。

下面我们所做的是向工程内添加代码。

将VBA工程中的一个名为Test过程的代码选定后复制,然后切换到VB编辑器,选中VB的工程管理器中的类模块VBACls,将代码粘贴至代码编辑窗口中,于是这段代码便成了类模块VBACls一个方法,然后将工程编译生成dll文件(如果编译成功的话)。

在Word中,我们就可以通过类模块VBACls建立的对象来调用此方法(具体怎么调用,我们将后面介绍)。

真正的VB编译标准DLL教程

真正的VB编译标准DLL教程

其实很早就有VB编译标准DLL的插件了,但是不是向网上所谓的替换某文件然后在复制什么文件然后在链接编译(真的有些懊恼,敢问写这文章的作者是怎么做到的,反正我是按照他的思路和方法去做了的,用VB6.0没办法编译出来,压根我可能有被忽悠了。

)标准的DLL插件是由“予心居” (记住这位大哥的名字,嗯,好人啊!)编写成的,标准的DLL也是很方便,而且还有很多你想不到的实用功能哦!好了,说了那么多,还没有进入主题,抱歉大家。

下面我们来做个小实例吧。

1:安装所需要的插件啦,这里提供两个下载方式:下载地址1:/ftn_handler/4f578214bc485 3618a778dbd701be3b85aa183a27e5da32a121fef179671bdaa620 b3053ac6076f96f050795264879c5d0381a33da559cae68941016a f7ba337/DLL%E6%8F%92%E4%BB%B6.exe?k=7537393161139cc705a7ee3547635617570601555802020a18010d07034e500d07521453 595557155702015759565c5c07005d576168647c797b8bd4dd9d4a 5d4d52390c&fr=00&&txf_fid=000000007f2437f4c00541329f3f cccfb0bb7256右键复制迅雷下载‘---------------------------------------------QQ群共享下载下载地址2:群号:34928986 (加群请注明VB编程)这个是永久共享的,上面那个是文件中转站的。

大家也别说我这不好那不好的了,其实现在学VB的人是在太少了。

很想结识一些和我一样共同志向的朋友!‘---------------------------------------------2:我们用编译一个标准的动态链接库,其功能实现按钮的特效,如图:我们首先创建一个DLL工程:如图:然后新建一个类模板:如图:(大家也别说我烦,这是对新手考虑,因为我也是新手过来的)在类模板输入代码(也不多说了,这个代码是网上随便找的,觉得好可以,所以就拿来给大家示范了。

DLL文件制作与在VBA调用初级进阶

DLL文件制作与在VBA调用初级进阶

DLL文件制作与在VBA调用初级进阶■作者:ldhyob 日期:2004.02本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA 中进行调用。

这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,而已掌握该技术的FANS 们完全可以跳过本文。

先来了解一下什么是DLL:DLL是Dynamic Link Library的缩写,意为动态链接库。

在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。

当我们执行某一个程序时,相应的DLL文件就会被调用。

一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。

DLL文件一般被存放在C:\Windows\System目录下。

因此,DLL文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。

就象我们常在程序中用的WINDOWS API,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。

也正因为此,现在许多VBA开发者在保护其代码时也多采用此法来维护其合法权益。

现在开始。

假如我们要编这么一段代码:将工作表Sheet1的A1单元格的数值与B1单元格的数值相加填写到C1单元格去(嘿嘿,这是极简单的了,只是用来说明问题),在VBA模块我们可以编写这样的代码:Sub test()On Error Resume NextDim i, j As IntegerWith Worksheets("Sheet1")i = .Cells(1, 1).Valuej = .Cells(1, 2).Value.Cells(1, 3) = i + jEnd WithEnd Sub执行上面的宏,会发现C1单元格自动会出现A1+B1的结果了。

VBA调用外部动态链接库的方法与示例

VBA调用外部动态链接库的方法与示例

VBA调用外部动态链接库的方法与示例VBA(Visual Basic for Applications)是微软的一种编程语言,广泛应用于Office套件中的各种应用程序,如Excel、Word和Access。

VBA允许用户通过编写宏来自动化任务、增强功能和定制用户界面。

有时候,我们可能需要调用外部的动态链接库(DLL)中的函数来扩展VBA 的功能。

本文将介绍VBA调用外部动态链接库的方法,并提供一些示例帮助读者更好地理解。

一、什么是动态链接库(DLL)?动态链接库(Dynamic Link Library,DLL)是一种微软Windows操作系统中的可执行文件。

DLL中包含可供其他程序调用的函数、数据和资源。

通过使用DLL,我们可以实现代码的共享和重复使用,提高程序的模块化程度和执行效率。

二、VBA中调用DLL的方法VBA提供了一组用于调用DLL函数的关键字和函数。

具体步骤如下:1. 声明DLL函数在VBA代码中,首先需要声明将要调用的DLL函数。

声明的语法如下:```Declare Function 函数名 Lib "动态链接库文件名" (参数列表) As 返回值类型```其中,函数名是DLL中的函数名,动态链接库文件名是DLL所在的路径和文件名,参数列表是函数的输入参数,返回值类型是函数的返回值类型。

2. 在VBA中调用DLL函数声明完DLL函数后,我们就可以在VBA代码中调用这些函数了。

调用的语法如下:```变量名 = 函数名(参数列表)```其中,变量名是接收函数返回值的变量,函数名是所声明的DLL函数的函数名,参数列表是函数的输入参数。

3. 注册和取消注册DLL在调用DLL函数之前,我们需要先将DLL注册到Windows系统中。

注册DLL可以使用Windows系统提供的regsvr32工具。

具体操作步骤如下:a. 打开命令提示符窗口。

b. 输入regsvr32命令,后面是DLL的完整路径和文件名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用VB编写.DLL动态链接库文件
作者:不详
VB中创建的DLL只是COM组件,无法作为输出函数的DLL,其实这只是个错误的说法。

其实MS非常狡猾,如果你是个VB疯狂发烧友的话,应该早就狂试出这种可以创建输出函数的DLL的方法。

VB编译文件实际上采取了两次编译的方法,首先是调用C2.exe产生*.OBJ文件,然后调用Link.EXE连接。

如果在LINK的时候添加EXPORT 选项,实际上是可以输出函数的。

但是,在VB的工程选项中将这些屏蔽了。

而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无法手动通过Link来创建我们需要的DLL了。

不过我找到一个比较龌鹾的变通的方法,就是先创建一个Exe工程,在Form_Load事件里面写下面的语句:
Sub Main
If MsgBox("哈哈", vbOKCancel) = vbOK Then
Shell "link2.exe " & Command$
End If
End Sub
然后编译为LinkTemp.EXE,接下来将LINK.EXE改名为Link2.exe,将LinkTemp.EXE改名为Link.EXE。

这样在VB调用Link.EXE时会弹出对话框,处理就会中断。

这时就可以有机会将OBJ文件拷贝出来了。

然后我创建了一个ActiveX DLL工程,在这个工程里面添加一个Module并创建一个Public函数mathadd:
Public Function mathadd(ByVal a As Long, ByVal b As Long) As Long
mathadd = a + b
End Function
编译这个工程,在Link的时候就会中断。

然后把创建的Class1.obj、Module1.obj、Project1.obj备份出来。

然后就可以调用Link2.exe连接OBJ到DLL了,我的连接代码是:
Link2.exe "e:\vbdll\Class1.obj" "e:\vbdll\Module1.obj" "e:\vbdll\Project1.obj" "E:\Program Files\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /EN TRY:__vbaS /EXPORT:mathadd /OUT:"e:\vbdll\ProjectOK.dll" /BASE:0x11000000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /Dll /INCREMEN TAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078
注意里面的/ENTRY和/EXPORT开关,/EXPORT开关声明了输出函数mathadd。

这样就大功告成了,可以被其他语言引入,例如在VB中,只需要:
Private Declare Function mathadd Lib "e:\vbdll\ProjectOK.dll" (ByVal a As Long, ByVal b As Long) As Long
经过变通,VB可以做出输出函数的标准动态链接库——其实,国外早已经有人做出了在VB中制作标准DLL的Add-Ins了,使用非常方便,我也做过测试,证明确实可行。

详情请看这里:
/vb/scripts/ShowCode.asp?txtCodeId=54190&lngWId=1。

相关文档
最新文档