【VB开源代码栏目提醒】:网学会员为广大网友收集整理了,用VB编写绿色软件 - 其它资料,希望对大家有所帮助!
用
VB 编写绿色软件2007 年 06 月 01 日 星期五 4:34 P.M.之一: 我认为的绿色软件就是免安装,短小精干的软件,目前的大部分共享软件都属于此类(或向绿色软件靠拢)。
连比较大的 phoshop 软件也把一些注册项放到一个专门的注册文件(reg 文件)里,到时重装的操作系统,只需把 reg 文件导入的注册表即可。
此外比如金山软件,基本上都是不用安装,即可运行。
目前绝大部分的共享软件都是用 delphi 做的,虽然它的 pascal 语法让人别扭,可大家还是坚持用,最好的理由就是,它做绿色软件很方便,一个 Exe 文件基本上什么都搞定了。
用 VC 做共享软件吧,如果是基于 API 开发(非 MFC)总是有点杀鸡焉用牛刀的感觉(目前的机器配置都比较高,共享软件一般都是应用方面的小程序,不像服务器,对性能要求那么高,再说,用 VC 开发,周期也相对较长)。
MFC 虽然开发相对比较快速,但是也存在一个运行库问题,做成动态链接吧,windows 9X 系列的用户无法使用,编译成静态链接吧,软件尺寸一下扩充了 1M 多,在
网络带宽还不富裕的情况下,还是少用为妙。
用
VB 做绿色软件,也有很多这方面的介绍,不过一个稍微复杂的程序,也带上好多嫁妆: 运行库, 控件等等,
vb ocx 如果软件中还使用了数据库(如 ADO,DAO 等),那能不能做成绿色软件还是个未知数。
不过
VB 易上手,开发软件较为快速,如果 API 技术掌握的较好的话,大部分软件都可以较好的实现。
如果用
VB 做共享软件,开发即轻松,又可以增加额外收入,何乐而不为呢? 可是上面所说的问题该如何解决呢?结合我的体会和开发了部分绿色软件的基础上我谈谈我的看法,不当之处,请方家斧正。
第一、针对运行库的问题可以这样解决。
目前大部分的用户都是 Win2000、XP 平台,而 win2000 以上的平台微软已为我们把运行库添加到系统目录了。
(关于这一点,delphi 用户很不满,认为这是不公平竞争,
VB 的运行库、MFC 的运行库都集成到系统了,这样 delphi 至少在软件大小上已远远的落后
VB 和 MFC开发的
软件了),所以这部分用户不用考虑运行库的
问题,对 9x 系列的用户,可以把
VB 运行库放在网上,需要的话让用户直接从网上下载。
如果你觉得不介意软件尺寸的话,也可以把运行库和你的软件一起发布(直接把运行库放到当前软件的同一目录即可)。
目前虽说微软不支持
VB 了,但是只要 Windows 的后续版本照样集成
VB 运行库,用
VB 开发共享软件还是大有前景的(微软上百兆.net 平台都敢集成,更何况区区 1.25M 的
VB 运行库呢?我对此乐观:) 第二、如果用
VB 开发共享软件,我建议仅用
VB 的基本控件,此外不要用DAO,ADO 等数据库操作控件(或引用),如果操作数据,我建议自己定义数据库格式(可以仿照 dBase 等数据库格式),在数据量不算大的情况下(比如 1万条记录以下),完全可以这样做,目前的用户机器都比较高档,没必要考虑太多的性能问题。
这样的话仅需要运行库即可运行
VB 程序,在 Win2000 以上系统,直接就可以运行。
第三、软件界面为了美观,直接用 image 控件贴图即可,这种方式我一直爱用。
对多语言版本,可以采用读取 ini 文件方式,也可以直接读取 VC 编译的纯资源文件(可以参考我写的一篇文章:
VB 动态加载纯 DLL 资源(http://blog.csdn.net/yefanqiu/archive/2005/03/16/320640.aspx)。
第四、软件开发完毕后,最好用 exe 压缩软件压缩一下,这样有两个好处,一是对被人破解加了一个障碍,二是,软件尺寸大大减小,利于发布。
第五、至于加密,那是仁者见仁,智者见智的事了,这里我就没必要多谈了。
之二: 随着计算机的不断发展,操作
系统的不断更新,硬盘容量、内存容量及相应的存取速度不断提高,使得开发出来的应用程序不再只是单一的可执行文件,特别是 Windows 应用程序,微软在 Windows 中引入了一个非常好但管理不方便的新东西——动态链接库 DLL。
这样开发出来的应用程序本身变小了,可相应辅佐运行的 DLL 文件变多了,而且在 Windows 中开发的程序,特别是用
VB开发的程序往往要用到第三方控件 OCX。
这样,开发出来的程序就不容易管理,而且 Windows 应用程序一般都需要安装。
而卸载往往又不彻底,常常会保留一些所谓的共享文件。
安装一个、两个这样的程序倒无妨,安装多了 Windows 的系统文件夹就会急剧膨胀。
绿色软件就是在这种情况下诞生的,它的特点是程序不用安装,拷贝或解压到一个目录下就可以运行,卸载只要删除整个目录就OK 了。
下面我们来谈谈怎样用
VB 6.0 编写一个绿色软件。
首先,用
VB 编写好应用程序。
需注意的是,一些用不着的第三方控件最好不要保留在工程中,这样开发出来的程序相对较小,并生成 EXE 文件。
其次,程序编好后,退出开发环境,启动
VB 6.0 中文版工具——Package Deployment 向导。
用向导将应用程序打包。
完成后用 Winzip 8.0或其他能打开并能解压 CAB 文件的压缩工具打开安装目录下的 SETUP.CAB,并解压到一个临时目录,删除 St6unst.exe 和 Setup1.exe 文件特别注意Msvbvm60.dll 和 Asycfilt.dll 必须带上,否则程序无法运行。
再次,将应用程序本身要调用到的下级目录一起拷贝到这个临时目录中。
如没有则跳过这一步。
最后,将这个临时目录中的文件整理一下。
如果你认为这些文件大了些,你可以用 ASPACK 或其他一些可执行文件压缩工具将这个目录中的可执行文件、DLL 文件、OCX 文件
压缩一下,用
VB 编写的程序一般经压缩后大小只有原来的 30。
如果运行稳定就可以将 BAK 文件删除,不行则恢复到原来的面貌。
现在你可以将这个目录改成你所需的名字,打包就可以发行了。
它能在没安装
VB 的机器中正常运行,怎么样,去 Try 一下吧,自己也来开发绿色软件。
运行环境:Windows98、Visual Basic6.0 中文版Visual Basic5.0 原理基本相同、
Aspack 可选。
之三: 现在非常流行“绿色”软件,不需要什么安装程序只要一个 EXE 文件就可以运行程序了,而在
VB 的编程中有许多地方需要调用第三方的控件(很难用API 函数搞定所有的功能),这就需要制做一个安装程序,把所需要的控件、DLL 文件或其他文件打包进去了, 那么在
VB 中怎么用变通的方法实现“绿色”软件呢,请看示例:1、主程序.EXE 用
VB6.0 编写的程序,调用了 Winsock 控件,如果在没有安装
VB5.0、6.0 的机器上运行则会出现错误,导致程序运行失败,这时如果按一般的方法,只有把这个程序用
VB5.0、6.0 的安装程序进行打包,不然只有用用 2 的方法来解决了。
2、注册程序.EXE 用
VB6.0 编写的程序,使用资源文件的方法,把 Winsock 控件封装到本程序中,在运行主程序.EXE 之前,先运行本程序,通过 API 函数GetSystemDirectory 取得系统的 WinddowsSystem 的目录,然后把 Winsock 控件复制到该目录下,并用 Shell 来完成控件的注册。
⑴启动
VB6.0,在“外接程序→外接
程序管理器”中加载“Visual Basic 6资源编辑器” ⑵在
VB 资源编辑器窗口中,点击“添加自定义资料”,增加 Winsock 控件(C:WinddowsSystemnsck.ocx),再双击刚刚创建的自定义资源,弹出”编辑属性”窗口,定义如下: 类型: “OCX” 标识号: 101 语言: 中文(中国) ⑶保存资源文件,写如下
代码:Option Explicit Private Declare Function GetSystemDirectory Lib kernel32 AliasGetSystemDirectoryA ByVal lpBuffer As String ByVal nSize As LongAs Long Const MAX_PATH 260 注释:定义足够长的字符串 Private Sub Form_Load Dim TempFile As Byte Dim FileNum As Integer Dim TempDir As String TempDir GetWinSysDir 注释:自定义函数取得系统的 WinddowsSystem的目录 TempFile LoadResData101 OCX 注释:用以从资源 .res 文件装载若干可能类型的数据,并返回一个 Byte 数组 FileNum FreeFile Open TempDir nsck.ocx For Binary Access Write As FileNum 注释:新建文件把 Winsock 控件复制到指定目录下 Put FileNum TempFile Close FileNum 注释:Shell regsvr32 TempDir nsck.ocx vbNormalFocus 注释:注册控件有弹出对话框Shell regsvr32 TempDir nsck.ocx /s vbNormalFocus 注释:注册控件无弹出对话框 MsgBox 注册成功,现在本程序可正常运行了!! vbOKOnly
注册控件 Unload Me End Sub Public Function GetWinSysDir 注释:定义读取 WinddowsSystem 的所在目录的函数 Dim S As String Length As Long S StringMAX_PATH 0 注释:赋值 Length GetSystemDirectoryS MAX_PATH 注释:S 为取得目录,MAX_PATH 为长度 S LeftS InStrS Chr0 - 1 注释:去掉多余的空格 GetWinSysDir S End Function注释:补充:S 和 MAX_PATH 的值是可以随便赋的,注释:如: Dim S As String 20注释: Length GetSystemDirectoryS 203、补充说明 在用
VB6.0 保存上述两个程序后, 请再使用
VB5.0 重新打开这两个程序,并编译为主程序.EXE、 ( 在 注册文件.EXE。
用
VB5.0 编译的程序, Win98、 2000下不需要任何 DLL 文件)4、程序运行 将主程序.EXE、注册文件.EXE 两个文件,复制到任意机器上,先运行注册文件.EXE 注册第三方的控件,再运行主程序.EXE,就不会有任何的错误了,一个变通的“绿色”软件就完成了。
之四:
VB-PowerWrap v4.1 汉化版开发
VB 绿色软件的好工具)『软件简介』
VB-PowerWrap 允许开发者在发布他们的程序时不需要再加入一大堆的 OCX 与 DLL 文件。
该程序可以帮助 Visual Basic 程序员在发布他们的可执行文件时不需要再担心关于其他链接库与 OCX 的问题了。
VB-PowerWrap 允许你将程序所必需的所有 .dll 文件与 .ocx 文件打包到你的
VB 程序内部,并且不需要用户安装,直接就可以运行。
并且
VB-PowerWrap 可以自动注册所必需的 .dll 与 .ocx 文件!
VB-PowerWrap 通过扫描一个 Visual Basic 的工程文件,并将该工程所需要的文件进行打包,然后创建一个包含所有必要文件的可执行文件供程序员发布。
VB-PowerWrap 使用了超强的压缩模块,这样可以创建出最小的 .exe 文件。
VB-PowerWrap 功能简介:压缩所有的 DLL 与 OCX 文件如果需要则在用户的机器上注册必要的控件不会出现恼人的运行时问题自动扫描工程所必需的 DLL 与 OCX 文件。
可以用于 Visual Basic 4、5、6 版本中。
下载地址:http://computer.baba8.com/download/HA_
VB-PowerWrap.rar之五:Visual Basic 中第三方控件使用之金蝉脱壳 在用
VB 编程中合理的使用第三方控件,往往能够事半功倍。
但是使用第三方控件也有不好 的地方,那就是为了保证程序正常运行,必须使程序能够在系统目录或程序目录下找到所 用的第三方控件。
要做到这一点通常有两种办法:一是把控件和程序制成一个压缩包发 行,这样的缺点是有可能导致在程序传播过程中丢失控件文件。
二是制作安装程序,缺点 是制作过程烦琐。
而且上面两种办法也不符合绿色软件的要求。
所谓的绿色软件是指软件 只有单个可执行文件且无须安装,目前很受用户欢迎。
那么有没有办法在使用了第三方控 件的情况下实现绿色软件梦呢?答案是有。
做法是,将第三方控件以自定义资源文件方式保存在程序中,程序运行之后使用控件之前 将所用到的控件生成到该程序目录下,完成控件从可执行文件中的金蝉脱壳。
具体做法如下: 第一步:将要用到的控件拷贝到当前工程目录下,右键单击该控件,选择属性,记下文件 大小。
注意,应记下以字节为单位的具体数字,而不是多少 K,以备编程使用。
第二步:引用并正常使用该控件。
第三步:新建资源文件加入工程,在资源文件编辑器中添加所使用的第三方控件为自定义 资源(CUSTOM),资源号使用默认的 101。
如果使用了多个控件则分别添加到资源文件的 101、102......资源项中,脱壳
代码也要作相应的修改。
第四步:编写控件脱壳
代码,使其读取资源文件的数据,在程序当前目录下生成控件。
代码如下: Private Const OCXSIZE 57344 欲生成的控件大小是 57344Byte名字为 CoolToolBar.ocx Sub Main Dim Ocx As Byte OCX 是个Btye 类型的数组 Dim Counter As Long Ocx LoadResData101 CUSTOM 将自定义资源中 101 号资源读入数组 OCX 注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为CUSTOM而不 是帮助所说的数字 10 If RightApp.Path 1 Then 读取程序所在路径判断是否为根目录并分别处理 程序在根目录下 If DirApp.Path CoolToolBar.ocx Then 程序路径下有无控件无则生成控件 以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录 Open App.Path CoolToolBar.ocx For Binary As 1 For Counter 0 To OCXSIZE - 1 注意因为从 0 Byte 开始因此以文件大小 - 1Byte 为终值 Put 1 OcxCounter Next Counter Close 1 End if Else 程序不在根目录下 If DirApp.Path CoolToolBar.ocx Then 程序路径下有无控件无则生成控件 以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录 Open App.Path CoolToolBar.ocx For Binary As 1 For Counter 0 To OCXSIZE - 1 注意因为从 0 Byte 开始因此以文件大小 - 1Byte 为终值 Put 1 OcxCounter Next Counter Close 1 End if End if Form1.Visible True 主程序所用控件已经生成,显示主窗体,进入主程序。
End Sub 注意:将以上
代码作为一个模块添加到工程中,并在工程-工程属性设置中将启动对象选 为 Sub Main即上面的脱壳
代码。
然后编译生成 EXE 文件,将该 EXE 文件拷贝到其他没有安 装所用控件的
计算机上运行一下看看是否实现了控件携带之金蝉脱壳。
如果是那么 OK!以 上为使用一个控件的情况,使用多个控件方法基本相同, 不在赘述。
以上摘自 瓜尔佳网摘类别:Programming 添加到搜藏 分享到 i 贴吧浏览853评论 0上一篇:别让男人看了就想嫖你摘自 MSN 读... 下一篇:VBScript 教程 什么是编码约定?...最近读者: 登 录 后, 您 就 出 现 在 这 里。
captainh killc long7 过客 bbaaiidd nnvas 木词 tiankong52 ook wd 68 0521 uua t 风 013网友评论:发表评论:址或邮箱: 选填内 插入表情 ▼ 闪光字容:发表评论