解决发布VB程序时携带大量ocx、dll文件的问题
ldc 2009-2-16科创茶话
  有时一个使用了复杂控件的VB程序运行需要一些普通WindowsXP没有的ocx或者dll,在发布程序时往往需要将这些文件和exe文件一起打包,让一些程序看起来很不清爽,可不可以让我们的程序都只有一个exe文件没有其它的东西呢?
  其实VB程序可以包含各种资源文件,这就为创建一个只有exe文件的程序提供了可能。但当我尝试将ocx、dll以资源文件的形式包含在exe文件中,当程序运行的时候尝试释放时又遇到一个问题,程序加载窗体时因为没找到支持文件而出错中断,没等到释放文件就崩溃了。为了解决这个问题,我们需要在加载窗体之前执行一个main过程,释放ocx、dll等文件。
以我写的UDPFighter为例,本程序需要一个MSCOMCTL.OCX和一个MSWINSCK.OCX,将这两个文件添加为资源文件。
1.JPG

创建一个标准模块,并在其中写一个main过程。代码如下:
'UnRes和TeShuML为自己写的函数,详见源文件
Sub main()
If Dir(TeShuML(37) & "\MSCOMCTL.OCX") = "" Then
    Call UnRes(101, "CUSTOM", TeShuML(37) & "\MSCOMCTL.OCX")   '释放文件
  Sleep 500
End If
If Dir(TeShuML(37) & "\MSWINSCK.OCX") = "" Then
    Call UnRes(102, "CUSTOM", TeShuML(37) & "\MSWINSCK.OCX")   '释放文件
  Sleep 500
End If
Form1.Show   '加载并显示窗体
End Sub
将启动对像设为Sub main()
2.JPG

编译程序后就可以实现仅用一个exe文件了。
+738  科创币    chiataimakro   2009-02-16    极富意义
来自 科创茶话
 
2009-2-16 23:56:54
ldc(作者)
1楼
源文件

网络攻击器_KC.rar
1.02e+3k
RAR
1次下载
折叠评论
加载评论中,请稍候...
折叠评论
2009-02-21 21:02:22
2009-2-21 21:02:22
2楼
就是把引用的DLL放到资源里。。。

不过我觉得这样做更好。
把资源压缩一下,然后运行的时候解压出来。
折叠评论
加载评论中,请稍候...
折叠评论
3楼
RLPack=LS+LZ
折叠评论
加载评论中,请稍候...
折叠评论
2009-07-23 11:43:24
2009-7-23 11:43:24
4楼
引用第3楼fw。于2009-02-21 21:13发表的  :
RLPack=LS+LZ

好像真有RLPACK...
折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png