VB封装工作组文件及调用方法探讨分享与交流.docx
- 文档编号:3198400
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:12
- 大小:117.96KB
VB封装工作组文件及调用方法探讨分享与交流.docx
《VB封装工作组文件及调用方法探讨分享与交流.docx》由会员分享,可在线阅读,更多相关《VB封装工作组文件及调用方法探讨分享与交流.docx(12页珍藏版)》请在冰点文库上搜索。
VB封装工作组文件及调用方法探讨分享与交流
VB封装工作组文件及调用方法探讨(分享与交流)
发布:
2008-10-1812:
11 | 作者:
江羽 | 来源:
本站原创 | 查看:
1267次
前言Office中国社区门户_C(z*?
s(E|u_U5X_E
Office中国社区门户/DJ_TB___^
此前我曾在论坛发过两篇文字,即关于《如何避开宏安全级限制启动MDB》与《VB建壳指定工作组并启动MDB》,由于成文较为仓促,文中有不少值得探究的地方,留待以后在文章中补充或更正。
_]_d_c6a_Q'X_{_U_H+a
x0本文与此前的两篇文字主题大同小异,仍围绕VB辅助ACCESS进行项目开发的主题,只是侧重点有所不同,但几篇文字又都相互关联,在实际项目开发中可以综合运用。
Office中国社区门户_J_@T8B_B:
w_O_~
本文主题为:
VB实现资源文件集成、封装及调用。
论坛中有许多朋友提及并关注这一话题,下面我将结合实例与大家共同分享自己有关这方面的一些心得。
权当抛砖引玉,还是那句话,如果此文对您有所帮助,那将是本人莫大之快事!
Office中国社区门户"M_q_e_G_i1L
∙本文讲解要点:
+A_B
Fv_T_]9r_a01、资源文件集成与封装
_U_x$W_}*q!
Y02、资源文件释放及调用Office中国社区门户_h;g_Q,|_E
3、封装技巧应用
∙系统及平台要求:
_K%v2R6^_T#G_S_Z01、操作系统为:
XP2
_n_]_f/r,f,\5E%\0L)f_{02、ACCESS为2003版
_iD_Y,Be$\/X#S03、VB为6.0
∙附注及说明:
_QI_gv-X+E01、本文围绕具体实例进行讲解。
有关实例及VB源码可到office中国江羽空间下载
t9Po_D%k_~02、实例含:
窗体图片素材、图标素材、编译的mdw文件集成.exe、VB源码Office中国社区门户9w_}_jq{@_J
3、实例演示:
将封装的“security.mdw”工作组文件释放到system32文件夹Office中国社区门户_P_~/U_y3A
4、本文默认你已对于VB6编程有一定了解
_k
y{(b_A_\__0第一章、资源文件集成
F
|_Y_P%B+E_l0Office中国社区门户.R)T_`+r_i&r_W
1.1初识VB资源编辑器Office中国社区门户_s_x_M'Cu8P_p_b!
e
我们要实现资源文件集成封装到应用程序中,首要的工作就是将预集成资源文件(本文实例:
“security.mdw”工作组文件)寄存到VB资源编辑器中。
Office中国社区门户/}_ZD%f_U_o.o_J
那什么VB资源编辑器?
通俗说就是VB用于存放资源文件的容器。
VB的资源编辑器可以存放包括:
文本、图片、二进制数据等,几乎所有的Windows应用程序中的资源,当我们需要使用时,再从中释放或提取出来,供我们使用。
Office中国社区门户_n1Bw_dx_^7C6e_j
0A_c_s_A9a_;a3j01.2启动资源编辑器
'y+v_?
l8|_t_X6G_b'p_|B0
#f_m_l_z_@_M0 步骤一:
VB资源编辑器是外接程序,我们必须调用并启动它。
在VB编辑环境中点菜单[外接程序]—[外接程序管理器](见图1),启动外接程序管理器窗口。
Office中国社区门户9K_c2QS/Q+N"o_P%JF
o_Vl*OUI_t_|0
6o_c_u4F_v_W0T4j9K0
)U_c_O)jI%[0 (图1)
a&\-w/b)F:
E_R!
Y_E0 Office中国社区门户_~"X_I4Bq(]Q4t)n
步骤二:
选择[VB6资源编辑器]选项—钩选[加载/卸载]—点[确定],你在工具栏中就能看到资源编辑器图标(见图2)。
Office中国社区门户_y_ds/v_^_`*V
x+u)]_Z+R*n;[~0
'h
`.@"k(S1d"L8U_]u#|*l0Office中国社区门户-k"^_\3o;~_|_@"e
(图2)
_c8vy"m%o0
_Q-Q_\M"K0 步骤三:
单击[资源编辑器图标](见图3)打开VB6资源编辑器窗口。
_j_`/MF-R%w1e1k6c0 Office中国社区门户4H_w_Tu_l
Office中国社区门户0]_p!
P_X_p:
d
_F*E-O*E_|/z_d[*U_b0
Y0H]/O
Ld01.3向VB资源编辑器添加自定义资源文件
_X\_Ay_~_S0P0
_cE)x8|!
A-O_H9i0 步骤四:
单击窗口[自定义资源]图标(见图4),在[打开一个自定义资源文件]对话框中选择自定义文件(实例为:
“security.mdw”工作组文件),点[打开]按钮选定资源文件就添加到资源编辑器中(见图5),资源编辑器会出现CUSTOM文件夹及[101]自定义资源。
_F(V"c_Q/J_Q_N_p7v0
+{_U/u4sB0
Office中国社区门户_C'F!
]+E6f6[
9X_[_E_u_H(r_Y
Kz0 (图4)Office中国社区门户2W&w%t_R_N^_v
!
]_gts6j[_S&e_b+e_o_D0 Office中国社区门户_mk*M_S$I9]c_\
_\_g:
c_u_}_}_I9r"?
_b7u0Office中国社区门户_W$J_O7y:
q3Q_W3T_l_t_O
(图5)Office中国社区门户"N_uc__3c_{+{
/J0^0N_b_E_B6K0 步骤五:
点[VB资源编辑器窗口]的[保存]图标,弹出[资源文件另存为]对话框,点确定,才算真正完成我们的资源文件集成(见图6)。
Office中国社区门户_r"t.q_W_`_R_g
Office中国社区门户I2u_g_r;M2y6H_Yj
Office中国社区门户_C(r_r*c(e_Q%G_^
(图6)Office中国社区门户5x%Q_S2W)_
_~;J_T5o_c0第二章、资源文件释放及调用Office中国社区门户{_n2m%H3`_Q6O_M"Z:
Q^
Office中国社区门户(z*j_u_M8J_]_S
要使用集成文件我们必须先释放已集成文件到指定文件夹,然后再调用就可以,实例是将工作组文件释放到Windows系统文件,即:
System32中。
要实现上述目标,我们必须先解决几个问题:
d3H_yg0b0
a_\3i:
E(t02.1获取系统文件夹System32路径Office中国社区门户_qy_`_J&r_j
我们通过GetSystemDirectoryAPI函数来编写一个获取系统文件夹自定义函数,我们在工程中建立一个模块,并将如下代码复制到模块中。
自定函数模块可以自动获取系统文件夹路径。
_I
O_N2l_\4P8n!
\0Office中国社区门户0?
_D_DQ_`_q
实例代码如下:
Office中国社区门户"c_K_~_K!
A_K5r
_\(h.w_Y_A_l0Office中国社区门户_N_N*L_f"Y_J
OptionExplicitOffice中国社区门户_S_e_g_{4a9Q_p5j,f_h
PrivateDeclareFunctionGetSystemDirectoryLib"kernel32"Alias"GetSystemDirectoryA"(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
_]_kV+]C#\_U0Office中国社区门户3n_Vf_A1x-@__
ConstMAX_PATH=250 '定义字符串长度
!
b7^a4}_O@1r3T_p0'*************************************************************************
+{7V_c_Q3X5D"}8I2|_y_I_M0'模块名:
GetWinSysDirOffice中国社区门户3@_v_Q8e3f
'------------------------------------------------------------------------------------------------------------
%f~_?
M_S3w_N__3`0d0'功能描述:
自定义读取Winddows\System32目录函数Office中国社区门户*Q_jo;C3v2^_H$Z_X
'输 入:
无Office中国社区门户7~_Z7}_Rp/N&T_U
'输 出:
GetWinSysDir(String)'System32路径
_loQ3g?
_r/K0'调用模块:
GetSystemDirectory获取系统目录
/@.o9m.[_C5E9W0'编 程:
江羽Office中国社区门户!
n4D1A%a_|_I2L_gK
'日 期:
2008-10-16Office中国社区门户_H"kO/W_t_v_e4D#~__
'*************************************************************************
!
nA_|_Y$oN(l_s_x#P_?
0PublicFunctionGetWinSysDir()AsStringOffice中国社区门户.q/y_D_{_z_W0t
DimstrSysDirAsStringOffice中国社区门户4p:
H7H|_~)N
DimLengthAsLongOffice中国社区门户:
u.Dy_DA
PJ
_q1F_@P.K_o.b;W_|_^0strSysDir=String(MAX_PATH,0)'赋值Office中国社区门户/Q_t*_
C_p_t&b5H
'strSysDir为取得系统文件目录
1pF_eN6~q/E%r)}_s0 Length=GetSystemDirectory(strSysDir,MAX_PATH)
8L_?
_Ck_sg)}`0 '去掉多余的空格Office中国社区门户R8v_L3J_h_d
strSysDir=Left(strSysDir,InStr(strSysDir,Chr(0))-1)
_P6r_i/S9M&m'h_w#}0 '赋值输出系统路径Office中国社区门户8z'I%E_W'Q?
5H
GetWinSysDir=strSysDirOffice中国社区门户_A_I_kW-h)Z9e_K/S
EndFunctionOffice中国社区门户9f\'JO8H_L_w
_y;o[(`]_A)W02.2资源文件释放方法解析Office中国社区门户2N_g
{8G_To_V
我们可以通过编程,将资源编辑器中文件,以自定义文件名释放到指定文件夹,举例说明,假如:
之前我们已将MyPro.exe文件集成至VB资源编辑的CUSTOM中,其资源编辑器中编号101,我们编程实现:
将MyPro.exe文件名释放到C盘,代码如下:
Office中国社区门户_W_J-`_q9R_t_j
Office中国社区门户_i-s"a7u_]_BG
ConstExeFile=114688 '欲生成的文件大小,原文件112K
_L:
d_b_n
dB_X_M4cb_K4C0 DimExeMy() AsByte 'Btye类型的数组,存放EXE文件Office中国社区门户2t_v_v*o"g4|4y__j
DimCounter AsLong '文件字节数Office中国社区门户1e_qn+rX)]_V
'将文件读入数组Office中国社区门户6j;]_E`_?
2D_.~
ExeMy=LoadResData(101,"CUSTOM")Office中国社区门户.d5U.Y,]_\_F.nHg_O_g
Open"C:
\MyPro.exe"ForBinaryAs#1Office中国社区门户4X_^R_Y.C0D2?
X
'从0Byte开始因此以文件大小-1Byte为终值
"m4I+M_vL6o}_F0 ForCounter=0ToExeFile-1
~%u_k#t7wP'bh'm_@0 Put#1,,ExeMy(Counter)'释放文件
2D;c0W+~_xr:
g_]!
x;L0 NextCounterOffice中国社区门户_x_m9l*L'F
Close#1
_D_K%c_h_s1@0特别说明:
Office中国社区门户_cf_a&Z!
v_hn
1、ConstExeFile=114688中欲生成的文件大小,是根据你前面集成到VB资源编辑器中的文件实际大小换算而来,假如:
ExeMy.exe文件为112K,必须换算成字节,1K=1024字节,112K换算后等于114688字节。
不多也不能少,否则释放文件将报错。
Office中国社区门户7L!
r3Q!
G(G_G_v
2、LoadResData(101,"CUSTOM")中101为文件集成在资源编辑品中的编号,CUSTOM为文件类型,这决定着你将释出哪个文件。
d2~r(U?
#C_y
U0 3、Open"C:
\MyPro.exe"ForBinaryAs#1中"C:
\MyPro.exe",给出了将要释放文件名:
MyPro.exe,路径:
C:
\,均为字符串。
/[_Q6k0t_u_U-B9r_[_U0∙∙⏹文件名可以自定义,与集成到资源编辑器中的文件名并不要求一样Office中国社区门户_W:
u_H&ILQ_T
∙∙⏹将要释放文件的路径可以根据自己需要而定
_E_V"G4B3f_a&aw-b0Office中国社区门户8d#H2u_e'c_^_w#^
2.3实例中释放工作组文件代码及说明:
Office中国社区门户3zpd9r6dT8Sg_\K"s
_|'eN_P9|_|_vG,^_r_j0Office中国社区门户_W/q_S_lv"|+Lw
'*************************************************************************
8z_q_]6o&l_LL_]0'模块名:
ReleaseMdwOffice中国社区门户8w.];P%Q_w_C8D1Q
'-------------------------------------------------------------------------Office中国社区门户*t_O_q_^_t-AF
'功能描述:
自定义过程,释放工作组文件到指定路径,并定义指定名称Office中国社区门户_L:
e_F+d_|0N0bL
'输 入:
strMdw(String) 工作组文件名Office中国社区门户_\5b&a_l9Q2]
' intTimeAsInteger 关闭窗体延迟时间
h)L!
K_S_b_h_Fn_VH_M0'输 出:
无Office中国社区门户_p"yfL_U
k_e-Q_T0F
'调用模块:
GetWinSysDir获取系统目录自定义函数Office中国社区门户_j(Z)u__J_?
:
c
'实 例:
ReleaseMdw"security.mdw",2000Office中国社区门户_S_T_K`%ji;q_g
'编 程:
江羽
!
x_O
K5vX_z_Y0'日 期:
2008-10-16Office中国社区门户8u'c)@!
g_S}-k+M
'*************************************************************************
8S4q_h-j_h_x0SubReleaseMdw(ByValstrMdwAsString,ByValintTimeAsInteger)Office中国社区门户_J_s_i_R;{*Z_V;@_d
_aF_L^_E_T_U_[0ConstSecurity=114688 '欲生成的工作组文件大小
1V3|_c"@!
Z_b'z0 Dimmdw() AsByte 'Btye类型的数组,存放工作组文件
%Y)e;g([_m6Q_K0 DimCounter AsLong '对工作组文件字节数进行循环
/Q"z_T'S_h.[5x-l0 DimstrSysPath AsString '系统文件路径
_q_@_K_J_L~0
5z_O_N_I:
j!
w*Y0P_I0Label1.Caption="系统正在配置ACCESS环境,请稍候......."Office中国社区门户_u_d_p#_/[7[_X_`
1If0Z_x_^0'获取Windows系统文件夹System32路径,并赋值变量
_y7G%_3^_y_p-v1L+~_^_q0 strSysPath=GetWinSysDirOffice中国社区门户_w-H
m_j_d$z6w_qg
mdw=LoadResData(101,"CUSTOM")'将文件读入数组
_a;u_NO_i_Q0
_L_]4[_Q)?
#}7Kh_I0'判断当前路径工作组文件是否存在,&_
_w_tw2v/w2s4W4bz7x0 存在则退出,不存在则释放工作组文件
$Z_q2I)B_d4|_u_i_C't0 IfDir(strSysPath&"\"&strMdw)=""Then
&z-d_k(G_?
!
J_W_S0 '释放工作组文件到系统文件夹
_K___O_?
X_o_ZF0 OpenstrSysPath&"\"&strMdwForBinaryAs#1
5@6bv_C9o_H0 '注意因为从0Byte开始因此以文件大小-1Byte为终值Office中国社区门户_X
Q(_M
W_U_Jf_M
ForCounter=0ToSecurity-1Office中国社区门户L)s_c*Z_u%g_a$o
Put#1,,mdw(Counter)'释放工作组文件Office中国社区门户0~_P!
g9W_c_h_l;R_A6`_g
DoEvents'转让控制权Office中国社区门户?
)I_K)m9A_p_s_]
NextCounter
-J_E(u_k$B0 Close#1Office中国社区门户_I4z-I&g_K_O
EndIfOffice中国社区门户_}_Q-g_U_h_c
$K7n\9^
M_j8H4x+`u_`0Label1.Caption="系统配置成功,正在启系统......."
$o)?
0f_l_N8X&Z0 '启动计时器,在指定秒数后关闭窗体Office中国社区门户_C_O/k_h_W_V_E%[_LN
Timer1.Interval=intTimeOffice中国社区门户_s5]
x:
CS_pc_S
EndSub 以上是实例中的代码,内有详细注释,就不做特别说明,你可以将以上代码复制到工程中的Form1窗体中。
Office中国社区门户9~-i_z_\&[_u_c_A!
\_z
代码功能:
是将集成在VB资源编辑器工作组文件,释放到系统文件夹中,即:
System32中,以便我们后面调用。
我们自定义了一个过程,过程预留了两个接口,一是将释放后的文件名,二是计时器触发时间,以便在指定时间关闭窗体,并关闭应用程序。
Office中国社区门户^-J.A_V_M_o:
^
_g+Ml_rK3}_p'F4f0第三章、封装应用程序 Office中国社区门户_W_E?
_[1p_U
Office中国社区门户i_xL_n't$}6J_o1}
[size=10.5pt] 前面我们已经完成了关键的几个步骤,我们现在要做的就是编译文件,在编译之前,我们还得做些准备工作。
K_Vk_A_e/B,n0Office中国社区门户6W_o_\_u6r)@_C
3.1添加控件并完善代码Office中国社区门户"__E_K3M4P_[I4c.@
在Form1窗体中加入
时钟控件,控件名:
Timer1;加入
标签控件,控件名Label1。
[size=10.5pt]添加窗体加载事件,时钟控件计时器触发事件代码。
Office中国社区门户Tg___f'd/h_o(b
[size=10.5pt]实例代码如下:
.s/W_H_S_M)U0
Office中国社区门户.@_n_N_Y_o'a_o_f"Y
Office中国社区门户_e3hG"F+A3~'r_b9V
'*************************************************************************
_z7r_]_MI_l0'模块名:
Form_Load
#?
$T_E_p;x-p0'------------------------------------------------------------------------------------------------------------
6L_@_m+{5F_n_}_h2G0'功能描述:
窗体加载事件
:
Gc_[_}_h0'输 入:
无Office中国社区门户_yO$Y_C^"Z)Z$FJ
'输 出:
无Office中国社区门户_D1n0x_~_R_{
'调用模块:
ReleaseMdw释放工作组文件到指定路径,本实例路径为系统文件夹Office中国社区门户_M_P1W.YT_BX
'编 程:
江羽Office中国社区门户T_h,N,g_c8B
'日 期:
2008-10-16
_e&L*d-Z6o_v_w&z0'*************************************************************************
_K_D_F)eNX/T*t"k0PrivateSubForm_Load()
6z&L_`_v3]_k+\*O.i0'显示窗体Office中国社区门户_Q+x_{-\+j1\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 封装 工作组 文件 调用 方法 探讨 分享 交流