标题:[转载]VB制作可输出函数的通用DLL
只看楼主
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
 问题点数:0 回复次数:10 
[转载]VB制作可输出函数的通用DLL

VB制作可输出函数的通用DLL---VB_DLL_Link用法

大家知道,VB6只能制作ActiveX DLL文件,制作能输出函数的通用DLL文件通常要用到VC等工具。实际上,VB在编译的时候加以控制,经过适当处理也是可以制作通用DLL的。使用VB_DLL_Link程序就可以利用VB编译出通用的DLL文件,此DLL文件可以被其他程序调用,例如在VB中用Declare语句调用并执行DLL中的函数。下面介绍VB_DLL_Link的使用方法:

1、安装:
本软件为纯绿色软件。下载VB_DLL_Link.exe后,双击它就可以自动安装了。你也可以手动将它复制到VB6程序目录下,将原Link.exe改名为Link2.exe,再将VB_DLL_Link.exe改名为Link.exe即可。


2、生成DLL:
安装好VB_DLL_Link后,打开VB6,新建标准exe工程,工程菜单>>移除Form1,添加一个标准模块如Module1.bas,首先向其中写入DLL的入口代码:
Function DLLMain(ByVal hInstDLL As Long, ByVal fdwReason As Long, ByVal lpwReserved As Long) As Long
DLLMain = 1
End Function
注意参数形式一定要正确,否则编译失败。高级编程时这些参数很有用。在首次调用DLL和调用DLL的原程序退出时均会执行DLLMain函数。这个函数是必须的。

为了使VB不报错,还需加入以下代码:
Sub Main()
'确保VB能编译
End Sub


然后就可以向Module1.bas中写入自定义函数代码了,如:
Function Add(ByVal A As Double, ByVal B As Double) As Double
MsgBox A + B
Add = A + B
End Function
Private Sub M(s As String)
MsgBox s, vbInformation
End Sub


编写好代码后,保存工程,选择文件菜单>>生成exe,注意将文件扩展名改为.dll,否则本软件不能调出。然后本程序就会运行,出现一个对话框提示选择此工程需要导出的函数所在的模块文件,此例即Module1.bas,选择好后本程序主窗口会列出Module1.bas中所有的函数名。如果有多个模块,可以选择"从模块添加"按钮继续添加函数名。"添加函数名"按钮可手动添加现存的函数的名称。然后勾选需要导出的函数名,点击"编译为能输出函数的DLL"按钮,即可编译出通用DLL文件了,它能输出函数列表中打勾的所有函数。若不需要编译为通用DLL,请点击"常规编译"或按Esc键。


3、应用DLL:
编译好的通用DLL文件,可按常规DLL文件的调用方法加以调用。如上述的例子在VB中调用方法如下(请将Lib后的字符串改为上面编译的Dll文件名):
Private Declare Function Add Lib "编译好的DLL文件的路径及名称" (ByVal A As Double, ByVal B As Double) As Double
Private Declare Sub M Lib "编译好的DLL文件的路径及名称" (s As String)
Private Sub main()
Add 9, 2 '调用DLL中的函数
M StrConv("By 同济黄正", vbUnicode) '字符串需转换成Unicode再传递
End Sub


试试看,效果怎样?


4、注意事项:
*向DLL传递字符参数时,需转换成Unicode形式StrConv(yourString, vbUnicode),才能正确使用。
*输出函数的模块建议用标准模块bas,虽然窗体模块frm和类模块cls中的函数也可以用,但有时会出错且限制多多。
*一个工程可以有多个bas模块,其间的函数均能直接输出。
*建议用Public类型的Function或Sub作为输出函数。
*上例只是一个简单的示例,实际应用中可以在DLL工程(VB的exe工程)中加入窗体、控件、模块、类模块等,实现复杂的功能。


欢迎广大VB爱好者使用本软件!授予个人用户免费使用本软件,但严禁用于商业用途!本人保留本软件的一切权利。
点此下载VB_DLL_Link最新版本! 若下载失败可去华军软件园下载老的版本。

若有问题请给我言。 (免费空间数据库不稳定,若不能留言请隔天再试试)

查看更多我的软件

By 同济黄正

附:

lCqnZoVp.rar (11.76 KB) [转载]VB制作可输出函数的通用DLL



运行软件时 它会提示过期了 ,将你的系统时间修改到2006年 是不是能用了?
搜索更多相关主题的帖子: DLL 函数 输出 制作 
2007-05-08 16:59
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 

没有人关心 啊


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-05-08 22:36
youyun612
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-5-9
得分:0 
侃侃
不见仪把
2007-05-14 14:48
lthiy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:849
专家分:0
注 册:2007-4-4
得分:0 
看看

2007-05-14 16:38
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 

好东西。

以前有一个类似的程序,但重装几次系统之后就没了……

2007-09-30 20:58
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
得分:0 

这种DLL注入后,有用没?


[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-26 10:25
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
以下是引用redice在2007-5-8 16:59:50的发言:


运行软件时 它会提示过期了 ,将你的系统时间修改到2006年 是不是能用了?

然后时间能改回来吗?


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-26 13:30
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
回复:(永夜的极光)以下是引用redice在2007-5-8 16:...
不行
每次编译程序时Link.exe都会先检测软件是否过期


你去下一个新版的就不用这样了

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-26 15:58
qzqzqzqz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-6-11
得分:0 
VB制作可输出函数的通用DLL
VB制作可输出函数的通用DLL
2008-06-11 11:18
jxyga111
Rank: 8Rank: 8
来 自:中華人民共和國
等 级:贵宾
威 望:33
帖 子:6015
专家分:895
注 册:2008-3-21
得分:0 
真的有用不?
2008-06-11 11:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-137680-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149851 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved