`
阿尔萨斯
  • 浏览: 4203118 次
社区版块
存档分类
最新评论

VB动态加载纯DLL资源

 
阅读更多

一、纯DLL资源的制作

打开VC6.0 创建一个基于win32的动态链接库

下一步中,要选择A sinmple Dll project

然后加载资源(注意对于超过256色的位图,VC不能编辑,不过这没关系)

可以加载位图、图标、字符串等,这是加载后的情况

资源添加完毕后,编译。(最好设为发布模式)

这样,一个纯资源DLL就编译完毕了。

二、VB动态调用资源DLL

调用很简单,源码如下:

'*************************************************************************
'** 叶帆源码 CSDN:yefanqiu
'**-----------------------------------------------------------------------
'**叶帆源码:http://blog.csdn.net/yefanqiu -->[叶帆源码]
'** XP窗体界面
'** 串口通信示例
'** 任意透明窗体
'** ...
'**叶帆软件:http://blog.csdn.net/yefanqiu -->[叶帆软件]
'** API 浏览器
'** VB源码之友
'** 叶帆成语词典
'** ...
'**更多软件,更多源码 请关注【叶帆Blog】
'**叶帆Blog:http://blog.csdn.net/yefanqiu
'*************************************************************************
Option Explicit

Private Const IDS_STRING1 As Long = 1
Private Const IDS_STRING2 As Long = 2
Private Const IDS_STRING3 As Long = 3
Private Const IDI_ICON1 As Long = 101
Private Const IDB_BITMAP1 As Long = 102
Private Const IDB_BITMAP2 As Long = 103

Private Const DST_BITMAP = 4
Private Const OBJ_BITMAP = 7

'位图结构
Private Type BITMAPINFOHEADER '40 bytes
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type
Private Type RGBQUAD
rgbBlue As Byte
rgbGreen As Byte
rgbRed As Byte
rgbReserved As Byte
End Type
Private Type BITMAPINFO
bmiHeader As BITMAPINFOHEADER
bmiColors As RGBQUAD
End Type

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadString Lib "user32" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
Private Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As Long) As Long
Private Declare Function LoadIcon Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long
Private Declare Function GetObjectType Lib "gdi32" (ByVal hgdiobj As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function DrawIcon Lib "user32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lParam As Long, ByVal wParam As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal un As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

'*************************************************************************
'**函 数 名:LoadRes
'**输 入:无
'**输 出:无
'**功能描述:资源加载
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-03-15 12:27:34
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub LoadRes()
Dim hRes As Long
Dim strData As String
Dim hBmp As Long
Dim hIcon As Long
Dim bitBmp As BITMAPINFO

'加载DLL
hRes = LoadLibrary(Combo1.Text)

'字符串
strData = Space(255)
LoadString hRes, IDS_STRING1, strData, 255
Label1(0).Caption = Trim(strData)

strData = Space(255)
LoadString hRes, IDS_STRING2, strData, 255
Label1(1).Caption = Trim(strData)

strData = Space(255)
LoadString hRes, IDS_STRING3, strData, 255
Label1(2).Caption = Trim(strData)

'位图
hBmp = LoadBitmap(hRes, IDB_BITMAP1)
If GetObjectType(hBmp) = OBJ_BITMAP Then
GetObject hBmp, Len(bitBmp), bitBmp
DrawState Picture1(0).hDC, 0, ByVal 0, hBmp, 0, 0, 0, bitBmp.bmiHeader.biWidth, bitBmp.bmiHeader.biHeight, DST_BITMAP
End If

'图标
hIcon = LoadIcon(hRes, IDI_ICON1)
DrawIcon Picture1(1).hDC, 0, 0, hIcon

'释放资源
DeleteObject hBmp
DeleteObject hIcon

'释放DLL
FreeLibrary hRes
End Sub

'*************************************************************************
'**函 数 名:Combo1_Click
'**输 入:无
'**输 出:无
'**功能描述:更换DLL
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-03-15 12:28:49
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Combo1_Click()
LoadRes
End Sub

'*************************************************************************
'**函 数 名:Form_Load
'**输 入:无
'**输 出:无
'**功能描述:初始化
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-03-15 12:28:58
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Form_Load()
Combo1.ListIndex = 0
LoadRes
End Sub

'*************************************************************************
'**函 数 名:Picture1_Paint
'**输 入:Index(Integer) -
'**输 出:无
'**功能描述:刷新
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-03-15 12:29:03
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Picture1_Paint(Index As Integer)
LoadRes
End Sub

运行后的界面:

运行后的界面:

运行后的界面:

源码下载地址:http://www.bjjr.com.cn/yefan/sourcecode/dllres.rar




<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
分享到:
评论

相关推荐

    VB调用DLL资源文件

    将项目图片、文字等使用VC++编写资源文件DLL提供给VB调用

    【实测有效,真正解决】VB.NET C# VS sqlite 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块

    同时还阔以解决System.DllNotFoundException: 无法加载 DLL“SQLite.Interop.DLL”问题。 判断32位进程还是64位进程可以用 Environment.Is64BitProcess 资源全部来自官网...

    C#程序实现动态调用DLL的研究

    介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供...

    VB.NET插件开发模式(反射加载DLL)

    VB.NET插件开发模式,完整的DEMO,已经很完善,反射加载DLL

    把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载

    介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决“DLL Hell”提供...

    VB6 处理32位图片及制作和生成dll资源文件

    vb6不能处理32位的图片,这个是解决办法。代码演示了如何从dll文件中读取32位图标,并如何生成自定义资源文件(与vb6资源不同)。来源于网络。

    一个用VB做的Excel终极伴侣---OBS.DLL

    一个功能强大的Excel2002/2003(OfficeXP/2003)的加载项。开发环境:WinXP+VB6+Office2003。大小只有840KB,但是需要其它控件的支持,包括:Msvbvm60.DLL、 Flash.ocx、 Comdlg32.ocx、 Msflxgrd.ocx、 Mscomctl.ocx...

    超强补丁技术_让EXE加载DLL(含VC6写的DLL源码模版).rar

    目前很多EXE都是没有源代码的,如果要让这个EXE加载你写的DLL,除了LPK这种只能在旧系统里面运行的技术,还有一个就是给EXE加一个代码段,让exe启动的时候加载你写的DLL。支持win10,win7, 包括64位的win7系,和老...

    vb6鼠标滚轮插件支持WIN7/WIN10.rar

    使用方法:下载后解压文件到(32位系统) C:\WINDOWS\system32(6位系统) C:\Windows\SysWoW64打开VB的IDE开发环境,在外接程序--外接程序管理器中选中MouseWheel Fix,在加载行为中勾选在启动中加载和加载/卸载,...

    VB编程资源大全(控件 其它3)

    ariadtbar.ZIP 用这个控件做工具条不须象VB自带的要用到ImageList控件,同时还有许多很方便的功能,慢慢去发掘吧(154KB) 61,s012.ZIP 一个很好进度条控件,可以放置图片(142KB) 62,s011.ZIP 用它...

    VB编程资源大全(控件 其它1)

    ariadtbar.ZIP 用这个控件做工具条不须象VB自带的要用到ImageList控件,同时还有许多很方便的功能,慢慢去发掘吧(154KB) 61,s012.ZIP 一个很好进度条控件,可以放置图片(142KB) 62,s011.ZIP 用它...

    vbAdvance V3.1.1.5 最终版 + Key(免费注册码)

    支持VB编写纯资源DLL 支持VB自定义生成DOS可执行文件,允许您自定义的应用程序所显示的文字,甚至实际运行您的DOS版本。 增强的IDE包括: Build按钮-非常类似于在Visual C + + Build按钮,这将立即建立您的项目 执行...

    VB编程资源大全(源码 数据库)

    1,databasesearch.ZIP 数据库查询示例程序(3KB) 2,dbgrid.ZIP 在DBGRID控件的单元格中实现下拉列表框(3KB) 3,flex.ZIP 隐藏FlexGrid的某些行(2KB) 4,dbpic.ZIP 将图片添加到Access数据库中。...

    在.NET中读取嵌入和使用资源文件的方法

    resx资源文件,在资源文件中添加资源,由ResourceManager类统一管理其中的资源。 下面分别详述这两种方法 一、使用GetManifestResourceStream读取嵌入资源 1、加入资源文件 直接把要嵌入到程序集的资源文件加入到...

    DLL函数查看器V3.5

    DLL函数查看器V3.5 (2012.03.16) =========================== *修复拖放/CTRL+C/"输出文件"空内容的问题 *修复无法复制UNICODE函数声明问题 *新增选项设置中可选复制函数声明是否"公开" *新增检索数据库功能(数据库...

    vb 专门人才管理系统 论文 完整版

    在Visual Basic环境下,利用才件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API)函数,以及动态链接库(DLL)、动态数据交换(DDE)、对象的链接与嵌入(OLE)、开放式数据访问(ODBC)等...

    VB6-SirkMini_2019.02.20 (1).rar

    保留资源编辑器、类生成器、ADO数据访问、ADO数据环境、数据报表等功能,方便创建数据库应用程序;添加鼠标滚轮支持,方便代码编辑。  3、支持创建控制台应用程序:生成的应用程序没有任何窗体,所有输入输出均通过...

    VB编程资源大全(控件 其它2)

    ariadtbar.ZIP 用这个控件做工具条不须象VB自带的要用到ImageList控件,同时还有许多很方便的功能,慢慢去发掘吧(154KB) 61,s012.ZIP 一个很好进度条控件,可以放置图片(142KB) 62,s011.ZIP 用它...

    SkinSharp 全部资源

    SkinSharp 全部资源 C# VB C++内含 72皮肤。 支持 SkinSharp For VC.Net 2005/2008/2010 注意事项: 使用时,确保所有库和皮肤(SkinH_Net.dll, SkinH_CS.dll, skinh.she)和程序在同一目录中。 您可以在任意...

    VB实用模块40例 源码程序

    DLL_Main.bas 2,676 1,096 Visual Bas FTP模块.cls 4,601 1,232 Visual Basi Open_File.bas 12,673 2,911 Visual Bas PE导出输入表演示(读文件版).bas 18,081 3,311 Visual Bas PE导出输入表演示(文件影射版)....

Global site tag (gtag.js) - Google Analytics