VB开发DLLVB开发DLL.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB开发DLLVB开发DLL

在动态链接技术中,模块和程序是分离的,模块独立于程序而存在于另一个分离的dll文件中,这个dll文件是动态链接到程序中的。那如何在vb中编写一个DLL程序呢?首先,新建一个工程,然后先中“ActiveX Dll”工程。然后开始编辑,往程序中添加你需要的部件和控件。编辑完成后,保存工程,工程一般是以“.vbp”文件保存,定义的类以“.cls”和“.vbw”文件保存,窗体以“.frm”文件保存,添加的模块一“.bas”文件保存……。接着选择“文件”菜单,弹出下拉框,选中“生成.dll”选项,它就会在上面弹出一个进度条“正在生成.dll文件”。生成以后是一个有好象齿轮状的图标。 当你需要在其他的程序中调用这个dll的时候,需要在系统中注册一下,具体的过程是开始-运行-打开”C:\WINDOWS\system32\regsvr32.exe”,然后找到你要注册的控件的路径,添加在regsvr32.exe的后面。如果你要引用,就开一个“标准EXE”工程,然后在“工程”选项中,单击“引用”,找到你刚才的“.dll”的文件名,在前面的复选框中打勾,就可以引用你刚才在那里面写的方法等。Public Function 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,每进程初始化要执行。A process is loading the DLL. Any per-process initialization should be performed. DLL_THREAD_ATTACH (2)进程交换(注入)一个新的线程,每线程初始化要执行。The process is spawning a new thread. Any per-thread initialization should be performed. DLL_THREAD_DETACH (3)一个线程结束。每线程清除要执行。A thread is exiting. Any per-thread cleanup should be performed. DLL_PROCESS_DETACH (0)一个进程断开dll链接,或者进程结束,每进程清除要执行。A process is detaching the DLL, or the process is exiting. Any per-process cleanup should be performed. lpvReserved一个long类型提供更多关于 DLL_PROCESS_ATTACH 和 DLL_PROCESS_DETACH的信息. (如果fdwReason是 DLL_THREAD_ATTACH or DLL_THREAD_DETACH,则该参数无用) 如果fdwReason 是 DLL_PROCESS_ATTACH, lpvReserved值无意义对于用函数 LoadLibrary and GetProcAddress装载dll, 如果 fdwReason 是 DLL_PROCESS_DETACH, lpvReserved值无意义,如果返回值是从 Win32 FreeLibrary function, lpvReserved值也无意义,如果进程结束调用入口点.函数的返回值只有在fdwReason 是 DLL_PROCESS_ATTACH才有意义,如果初始化成功,函数返回true,否则返回false.因为这个函数是window调用的入口点.传入这个函数的参数值是由windows决定.当一个线程被用win32 TerminateThread 函数和 Win32 TerminateProcess 函数结束,没有调用入口点.要开发一个windows dll,我们创建一个简单的数学函数库,下面代码存在一个.bas模块中名字:MathLib.basOption ExplicitPublic Const DLL_PROCESS_DETACH = 0Public Const DLL_PROCESS_ATTACH = 1Public Const DLL_THREAD_ATTACH = 2Public Const DLL_THREAD_DETACH = 3Public Function DllMain(hInst As Long, fdwReason

文档评论(0)

vshoulrengb3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档