VB如何调用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,编译运⾏。
VB6.0怎么调用带参数的DLL?

VB6.0怎么调用带参数的DLL?
vb6.0中可以创建DLL文件,也可以调用DLL文件,该怎么调用呢?下面我们就来看看详细的教程。
•软件名称:
•msdn for vb6.0(vb6 msdn) 精简中文版
•软件大小:
•20.6MB
•更新时间:
•2014-02-06立即下载
1、桌面上双击VB图标,打开Visual Basic。
2、打开的VB窗口中,选择文件---->新建工程选项。
3、新建工程窗口中,选择ActiveX DLL选项。
4、编辑窗口中,输入dll文件的代码,具体内容由个人决定。
5、单击文件---->保存工程,将dll工程保存。
6、单击文件---->生成dll,生成一个dll文件。
7、单击工程---->引用选项,如下图所示。
8、引用窗口中,单击浏览按钮。
9、选择要引用的DLL文件,单击打开按钮。
10、DLL文件就被引用到应用程序中了,单击确定按钮。
11、接下来就可以在应用程序中,插入组件,书写代码使用DLL
文件了。
以上就是VB6.0调用带参数的DLL的教程,希望大家喜欢,请继续关注脚本之家。
VB调用大漠dll的3种方法!回复有源码有vb例子(解决占CPU高的问题..

VB调用大漠dll的3种方法! 回复有源码有vb例子(解决占CPU高的问题)=========================================================== ====================='/forum.php?mod=viewthread&tid=118 820&extra=page%3D1'大漠dll下载地址'1 大漠用VB dm = CreateObject(dm.dmsoft)'引用里选上dm.dllPrivate Sub Command1_Click()Dim dm As ObjectDim verSet dm = CreateObject("dm.dmsoft")ver = dm.ver()If Len(ver) = 0 ThenMsgBox "当前大漠插件未能正常调用"ElseMsgBox "当前大漠插件DM.dll版本是:" & verEnd IfEnd Sub' 第一种方法奇卡 cpu 占用高'========================================================== ======================'2 '在VB6里面新建一个对象:dmsoft对象' 引用里选上dm.dll' 通用里新建一个 dmsoft对象'其他插件也可以这样调用 Dim b As New dmsoft 只需要把dmsoft 换成别的插件的类名Dim b As New dmsoft'在VB6里面新建一个对象:dmsoft对象Private Sub Command1_Click()本帖隐藏的内容b.SetWindowText Me.hWnd, "你好" '修改VB的窗口标题b.MoveTo 100, 100End SubPrivate Sub Command2_Click()jb = b.GetForegroundWindow()MsgBox jbEnd SubPrivate Sub Command3_Click()Form1.Caption = "找图"'dm.FindPic 0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, yCall b.FindPic(0, 0, 800, 600, "C:\开始.bmp", 0, 0.9, 0, x, y)If x >= 0 Thenb.MoveTo x, y '移动鼠标'dm.LeftClick '移动单击MsgBox "找图找到!"ElseMsgBox "找图没找到!"End IfEnd Sub'========================================================== ======================'3 建立个模块Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)'延时函数 sleepPublic Function Delay(DT As Long)For i = 0 To DT Step 2DoEvents '操作权交给系统否则程序会暂时无响应Sleep 1Next iEnd FunctionPublic Function 注册(dm As Object) As ObjectShell "regsvr32 dm.dll /s" '注册大漠插件到系统Delay 500Set dm = CreateObject("dm.dmsoft") '创建大漠插件End Function'窗体Dim dm As Object '声明 DM 为控件类型Private Sub 句柄_Click()Dim jb As Longjb = dm.GetForegroundWindow()MsgBox "句柄是:" & jbEnd SubPrivate Sub 版本_Click()Form1.Caption = "版本"ver = dm.ver()If Len(ver) = 0 ThenMsgBox "当前大漠插件未能正常调用"ElseMsgBox "当前大漠插件DM.dll版本是:" & verEnd IfEnd SubPrivate Sub 退出_Click()EndEnd SubPrivate Sub 移动_Click()Form1.Caption = "移动鼠标"dm.MoveTo 22, 22 '移动鼠标'dm_ret = dm.LeftClick '移动单击End SubPrivate Sub 找图_Click()Form1.Caption = "找图"'dm.FindPic 0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, yCall dm.FindPic(0, 0, 800, 600, App.Path + "\开始.bmp", 0, 0.9, 0, X, y)If X >= 0 Thendm.MoveTo X, y '移动鼠标'dm.LeftClick '移动单击Delay 3000MsgBox "找图找到!"ElseMsgBox "找图没找到!"End IfEnd SubPrivate Sub 文字识别_Click()Form1.Caption = "文字识别"dm.SetDict 0, App.Path + "\DDDD.txt"s = dm.Ocr(0, 0, 200, 100, "ffffff-000000", 1#)MsgBox "识别结果是:" & sEnd SubPrivate Sub 找字_Click()Form1.Caption = "找字"dm.SetDict 0, App.Path + "\DDDD.txt"dm_ret = dm.FindStr(0, 0, 200, 100, "我", "ffffff-000000", 1#, intx, intY)If intx >= 0 Thendm.MoveTo intx, intYMsgBox "找字找到!"ElseMsgBox "找字没找到!"End IfEnd SubPrivate Sub Form_Load()On Error Resume Next '容错处理遇到错误直接执行下面的语句注册 dmEnd Sub。
VB调用.NETDLL(一)-skila的日志-网易博客

VB调用.NETDLL(一)-skila的日志-网易博客VB调用.NET DLL(一)学习 2009-07-14 21:38:57 阅读138 评论0 字号:大中小前段两个系统需要衔接,原有的Client端程序是用VB6开发的,需要调用Java开发的Web Service,开发时间BT的短,没有时间研究VB调用Web Service,故先用C#编写DLL文件做过渡调用,关于C#调用Web Service是非常简单的,在此也不做详细描述了。
现在主要解决VB调用.net的DLL。
我们先做了测试:(VS2005)1、先选择"文件"--> -->"新建"-->"项目"-->"类库"我在这取名T estVB,代码如下:using System;using System.Collections.Generic;using System.Text;namespace TestVB{public class Test{public string testEcho(){return "test1";}}}2、编译此项目前,先设置"项目"-->"TestVB属性"-->"生成"下的"为COM Interop 注册"打上勾,原有AssemblyInfo.cs文件中的"[assembly: ComVisible(false)]"修改为"[assembly: ComVisible(true)]"保存,编译即可3、把生成的DLL文件拷贝到VB开发机器上(该机器需安装相应的.NET框架),运行Regasm /tlb /codebase $DLL_DIR/T estVB.dll 命令注册该DLL文件,在VB新建项目中引用TestVB.tlb即可在vb中调用DLL中的函数。
【VB技巧】VB静态调用与动态调用dll详解

【VB技巧】VB静态调⽤与动态调⽤dll详解摘⾃:【【请注意】】:在以下语法格式中,请注意 [函数名] 的【⼤⼩写】静态与动态⽐较:静态调⽤简单,动态调⽤⿇烦;静态调⽤占⽤资源多,动态调⽤占⽤资源少;正所谓鱼和熊掌不可兼得。
静态调⽤定义:就是常⽤的申明API,⼀个DLL库⾥有很多的函数可供调⽤,把要⽤的申明即可。
⽐如:Public/Private Declare Function [函数名] Lib "DLL⽂件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]⽰例:Private Declare Function Test Lib "dll.dll" (x As String) As String当程序结束的时候系统回⾃动释放DLL调⽤。
动态调⽤定义:使⽤LoadLibery(DLL名),系统会检查DLL是否调⼊内存。
如果调⼊了,可直接调⽤DLL⾥的所有函数,没有就会把DLL加⼊⽬标进程的进程空间。
通过函数GetProcAddress确定函数⼊⼝地址,然后调⽤,后⼀种⽅法VB⾥不常⽤的。
静态调⽤详解:制作好DLL之后,⾸先⽤Declare声明语句在窗体级或模块级或全局模块的代码声明段进⾏声明,将动态链接库中的函数声明到VB中,供VB程序调⽤。
语法格式1:Public/Private Declare Sub [函数名] Lib "DLL⽂件名" [Alias "别名"] (参数变量表)语法格式2:Public/Private Declare Function [函数名] Lib "DLL⽂件名" [Alias "别名"] (参数变量表) [As 返回值的数据类型]在声明中⾸先⽤Declare关键字表⽰声明DLL中的函数。
在C语⾔中有的函数类型为VOID,它表⽰不具有返回值,则必须⽤关键字Sub将其声明成过程。
VBA调用DLL动态链接库

VBA调用DLL动态链接库1.打开VBA编辑器,点'工具'菜单下的'引用'命令,在引用对话框中引用该动态链接库。
调用代码如下:Dim VBACls As New VBAPrj.VBAClsVBACls.Test(ThisDocument)2.如果知道该动态链接库文件的位置,可以在ThisDocument代码窗口以代码形式引用, 代码如下:Private Sub Document_Open()On Error Resume NextMe.VBProject.References.AddFromFile 'D:\VBAPrj.dll'End Sub3.将动态链接库文件拷贝到文档同一目录下,可在ThisDocument代码窗口中建立如下引用函数:Private Function GetProjectDoc() As ObjectOn Error Resume NextDim VBACls As ObjectSet VBACls = CreateObject('VBAPrj.VBACls')If VBACls Is Nothing ThenMsgBox 'VBAPrj.dll必须和文档在同一目录下!'Exit FunctionEnd IfSet GetProjectDoc = VBAClsEnd Function然后以以下代码形式调用Test:Dim objPrjDoc As ObjectSet objPrjDoc = GetProjectDocCall objPrjDoc.T est(ThisDocument)Set objPrjDoc = Nothing使用第一种方法调试提示找不到类库,第二种方法我没试过,用了第三种方法调试成功。
我也觉得第三种还是蛮好的,除了多几行代码。
成功调用DLL后原来很多在VB下写的东东简单改一下就可以在VBA下用了,效率又高,保密性又好。
VB调用DLL文件

VB调用DLL文件
VB默认的传递方式就是传指针(ByRef,也就是把变量的地址传递给所调用的函数)。
如果要传值(也就是把变量的值传递给所调用的函数)反要在参数声明前加ByVal。
1.如果你传递的参数是普通的数据类型,在参数前什么都不要加就行了。
如C语言声明为:
void __stdcall MyProc(short * nPara);
则VB声明为:
Declare Function MyProc Lib "MyDll.dll" (nPara As Integer) 调用时同普通函数。
2.如果C语言中的指针是字符串指针,那么在VB声明时需要加上ByVal,这是个例外。
如C语言声明为:
void __stdcall MyProc(char * sPara);
则VB声明为:
Declare Function MyProc Lib "MyDll.dll" (ByVal sPara As String)
调用时同普通函数。
3.如果C语言的指针是数组指针,则在VB中调用时应将数组的首元素传递给DLL。
如C语言声明为:
void __stdcall MyProc(int [] arrPara);
则VB声明为:
Declare Function MyProc Lib "MyDll.dll" (nPara As String)
调用时为MyProc A(0)。
注意:不能直接传递数组名,因为如果传递数组名,VB实际会传一个复杂的结构类型给DLL,这对编写C语言的DLL来说,处理这样的结构比较麻烦,所以通常都不支持这种方式。
在VB中调用DLL的方法

在VB中调用DLL的方法方法一:使用Declare语句VB中可以使用Declare语句来声明DLL函数,然后直接调用该函数,具体步骤如下:1.确保DLL文件已经存在,并了解所要调用的DLL函数的名称、参数和返回值类型。
2. 在VB代码的模块级别上,使用Declare语句来声明DLL函数,语法如下:Declare Function functionName Lib "dllFileName" ([参数列表]) As 返回值类型其中,functionName是要调用的DLL函数的名称,dllFileName是DLL文件的名称(带有扩展名),[参数列表]是DLL函数的参数列表,如果没有参数,则可以省略;返回值类型是DLL函数的返回值类型。
3. 在需要调用DLL函数的地方,直接使用函数名进行调用,如:result = functionName([参数])其中,result是接收DLL函数返回值的变量。
4.运行程序,并检查结果是否正确。
方法二:使用COM组件如果DLL文件是使用COM组件进行编写的,可以使用VB的COM互操作性来调用DLL方法,具体步骤如下:1.确保DLL文件已经注册为COM组件,并了解所要调用的DLL方法的名称、参数和返回值类型。
2.在VB项目中添加对DLL文件的引用,方法是在“项目”->“引用”菜单下,选择“添加引用”,然后在“COM”选项卡中找到并选中DLL文件。
3. 创建一个COM对象,可以使用CreateObject或者New关键字,具体语法如下:Dim obj As ObjectSet obj = CreateObject("dllFileName.ClassName")'或者Dim obj As New dllFileName.ClassName其中,dllFileName是DLL文件的名称(不带扩展名),ClassName是DLL内部的类名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB如何调用dll函数
2008-01-10 17:17 開始習慣孤單 | 分类:VB| 浏览13089次
假如我有个DLL,名为 asdfg.dll
它里面有一个函数 zxc(参数1,参数2)
我要用这个函数,该怎么写?
请高手帮我写出脚本,有时间的话请再加上注释
谢谢!!
2008-01-10 19:50 提问者采纳
1.在工程-引用中将asdfg.dll引用过来
2.dim AAA as asdfg 'asdfg是类模块的名称
Private Sub Form_Load()
dim x
Set AAA = New asdfg
x = AAA.zxc(参数1,参数2)'参数1,2自己写
End Sub
建议你了解一下下面dll的制作方法,理解就更透彻了。
下面内容来自百度。
1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块
名字为mytestdll
2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD Public Function dlltest1() As String
dlltest1 = "HELLO WORLD"
End Function
3.保存,生成DLL,名字为
vbmytestdll.dll
4.新建一个EXE工程,在菜单: 工程---引用---浏览里找到vbmytestdll.dll,把它引用进来
5.EXE工程代码如下:
Option Explicit
Dim testdll As mytestdll'类模块名字
Private Sub Form_Load()
Set testdll = New mytestdll 'DLL的一个新实例
Me.Caption = testdll.dlltest1 '我的标题=返回DLL的HELLO WORLD
End Sub
1、右击工程》添加引用把你的dll文件添加进去
2、然后你定义一个变量作为dll中函数类型的,将变量实例化,最后在调用方法。