【VB开源代码栏目提醒】:网学会员鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“用VB编写绿色软件 - 讲义教程”一文,供大家参考学习
用
VB编写绿色软件 用
VB编写绿色软件2010-12-07 1237 用
VB编写绿色软件 我认为的绿色软件就是免安装短小精干的软件目前的大部分共享软件都属于此类或向绿色软件靠拢。
连比较大的phoshop软件也把一些注册项放到一个专门的注册文件reg文件里到时重装的操作系统只需把reg文件导入的注册表即可。
此外比如金山软件基本上都是不用安装即可运行。
目前绝大部分的共享软件都是用delphi做的虽然它的pascal语法让人别扭可大家还是坚持用最好的理由就是它做绿色软件很方便一个Exe文件基本上什么都搞定了。
用VC做共享软件吧如果是基于API开发非MFC总是有点杀鸡焉用牛刀的感觉目前的机器配置都比较高共享软件一般都是应用方面的小程序不像服务器对性能要求那么高再说用VC开发周期也相对较长。
MFC虽然开发相对比较快速但是也存在一个运行库问题做成动态链接吧windows 9X系列的用户无法使用编译成静态链接吧软件尺寸一下扩充了1M多在网络带宽还不富裕的情况下还是少用为妙。
用
VB做绿色软件也有很多这方面的介绍不过一个稍微复杂的程序也带上好多嫁妆
vb运行库ocx控件等等如果软件中还使用了数据库如ADODAO等那能不能做成绿色软件还是个未知数。
不过
VB易上手开发软件较为快速如果API技术掌握的较好的话大部分软件都可以较好的实现。
如果用
VB做共享软件开发即轻松又可以增加额外收入何乐而不为呢 可是上面所说的问题该如何解决呢结合我的体会和开发了部分绿色软件的基础上我谈谈我的看法不当之处请方家斧正。
第一、针对运行库的问题可以这样解决。
目前大部分的用户都是Win2000、XP平台而win2000以上的平台微软已为我们把运行库添加到系统目录了。
关于这一点delphi用户很不满认为这是不公平竞争
VB的运行库、MFC的运行库都集成到系统了这样delphi至少在
软件大小上已远远的落后
VB和MFC开发的软件了所以这部分用户不用考虑运行库的
问题对9x系列的用户可以把
VB运行库放在网上需要的话让用户直接从网上下载。
如果你觉得不介意软件尺寸的话也可以把运行库和你的软件一起发布直接把运行库放到当前软件的同一目录即可。
目前虽说微软不支持
VB了但是只要Windows的后续版本照样集成
VB运行库用
VB开发共享软件还是大有前景的微软上百兆.net平台都敢集成更何况区区1.25M的
VB运行库呢我对此乐观 第二、如果用
VB开发共享软件我建议仅用
VB的基本控件此外不要用DAOADO等数据库操作控件或引用如果操作数据我建议自己定义数据库格式可以仿照dBase等数据库格式在数据量不算大的情况下比如1万条记录以下完全可以这样做目前的用户机器都比较高档没必要考虑太多的性能问题。
这样的话仅需要运行库即可运行
VB程序在Win2000以上系统直接就可以运行。
第三、软件界面为了美观直接用image控件贴图即可这种方式我一直爱用。
对多语言版本可以采用读取ini文件方式也可以直接读取VC编译的纯资源文件可以参考我写的一篇文章
VB动态加载纯DLL资源。
第四、软件开发完毕后最好用exe压缩软件压缩一下这样有两个好处一是对被人破解加了一个障碍二是软件尺寸大大减小利于发布。
第五、至于加密那是仁者见仁智者见智的事了这里我就没必要多谈了。
随着计算机的不断发展操作
系统的不断更新硬盘容量、内存容量及相应的存取速度不断提高使得开发出来的应用程序不再只是单一的可执行文件特别是Windows应用程序微软在Windows中引入了一个非常好但管理不方便的新东西——动态链接库DLL。
这样开发出来的应用程序本身变小了可相应辅佐运行的DLL文件变多了而且在Windows中开发的程序特别是用
VB开发的程序往往要用到第三方控件OCX。
这样开发出来的程序就不容易管理而且Windows应用程序一般都需要安装。
而卸载往往又不彻底常常会保留一些所谓的共享文件。
安装一个、两个这样的程序倒无妨安装多了Windows的系统文件夹就会急剧膨胀。
绿色软件就是在这种情况下诞生的它的特点是程序不用安装拷贝或解压到一个目录下就可以运行卸载只要删除整个目录就OK了。
下面我们来谈谈怎样用
VB 6.0编写一个绿色软件。
首先用
VB编写好应用程序。
需注意的是一些用不着的第三方控件最好不要保留在工程中这样开发出来的程序相对较小并生成EXE文件。
其次程序编好后退出开发环境启动
VB 6.0中文版工具——PackageDeployment向导。
用向导将应用程序打包。
完成后用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控件CWinddowsSystemnsck.ocx再双击刚刚创建的自定义资源弹出编辑属性窗口定义如下 类型OCX 标识号101 语言中文中国 ⑶保存资源文件写如下
代码 Option Explicit Private Declare Function GetSystemDirectory Libkernel32AliasGetSystemDirectoryAByVal lpBuffer As StringByVal nSize As LongAs Long Const MAX_PATH260注释定义足够长的字符串 Private Sub Form_Load Dim TempFileAs Byte Dim FileNum As Integer Dim TempDir As String TempDirGetWinSysDir注释自定义函数取得系统的WinddowsSystem的目录 TempFileLoadResData101OCX注释用以从资源.res文件装载若干可能类型的数据并返回一个Byte数组 FileNumFreeFile Open TempDirnsck.ocxFor Binary Access Write AsFileNum注释新建文件把Winsock控件复制到指定目录下 PutFileNumTempFile CloseFileNum 注释Shellregsvr32TempDirnsck.ocxvbNormalFocus注释注册控件有弹出对话框 Shellregsvr32TempDirnsck.ocx/svbNormalFocus注释注册控件无弹出对话框 MsgBox
注册成功现在本程序可正常运行了vbOKOnly注册控件 Unload Me End Sub Public Function GetWinSysDir注释定义读取WinddowsSystem的所在目录的函数 Dim SAs StringLength As Long SStringMAX_PATH0注释赋值 LengthGetSystemDirectorySMAX_PATH注释S为取得目录MAX_PATH为长度 SLeftSInStrSChr0-1注释去掉多余的空格 GetWinSysDirS End Function 注释补充S和MAX_PATH的值是可以随便赋的 注释如Dim SAs String20 注释LengthGetSystemDirectoryS20 3、补充说明 在用
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-Powe rWrap允许你将程序所必需的所有.dll文件与.ocx文件打包到你的V B程序内部并且不需要用户安装直接就可以运行。
并且
VB-PowerWra p可以自动注册所必需的.dll与.ocx文件
VB-PowerWrap通过扫描一个Visual Basic的工程文件并将该工 程所需要的文件进行打包然后创建一个包含所有必要文件的可执行文件 供程序员发布。
VB-PowerWrap使用了超强的压缩模块这样可以创建出 最小的.exe文件。
VB-PowerWrap功能简介 压缩所有的DLL与OCX文件 如果需要则在用户的机器上注册必要的控件 不会出现恼人的运行时问题 自动扫描工程所必需的DLL与OCX文件。
可以用于Visual Basic 4、5、6版本中。
下载地址之五Visual Basic中第三方控件使用之金蝉脱壳 在用
VB编程中合理的使用第三方控件往往能够事半功倍。
但是使用第三方控件也有不好的地方那就是为了保证程序正常运行必须使程序能够在系统目录或程序目录下找到所用的第三方控件。
要做到这一点通常有两种办法一是把控件和程序制成一个压缩包发行这样的缺点是有可能导致在程序传播过程中丢失控件文件。
二是制作安装程序缺点是制作过程烦琐。
而且上面两种办法也不符合绿色软件的要求。
所谓的绿色软件是指软件只有单个可执行文件且无须安装目前很受用户欢迎。
那么有没有办法在使用了第三方控件的情况下实现绿色软件梦呢答案是有。
做法是将第三方控件以自定义资源文件方式保存在程序中程序运行之后使用控件之前将所用到的控件生成到该程序目录下完成控件从可执行文件中的金蝉脱壳。
具体做法如下 第一步将要用到的控件拷贝到当前工程目录下右键单击该控件选择属性记下文件大小。
注意应记下以字节为单位的具体数字而不是多少K以备编程使用。
第二步引用并正常使用该控件。
第三步新建资源文件加入工程在资源文件编辑器中添加所使用的第三方控件为自定义资源CUSTOM资源号使用默认的101。
如果使用了多个控件则分别添加到资源文件的101、102.资源项中脱壳
代码也要作相应的修改。
第四步编写控件脱壳
代码使其读取资源文件的数据在程序当前目录下生成控件。
代码如下 Private Const OCXSIZE57344欲生成的控件大小是57344Byte名字为CoolToolBar.ocx Sub Main Dim OcxAs ByteOCX是个Btye类型的数组 Dim Counter As Long OcxLoadResData101CUSTOM将自定义资源中101号资源读入数组OCX 注意微软的帮助中对加载自定义资源的说明有错误自定义资源标识为CUSTOM而不是帮助所说的数字10 If RightApp.Path1Then读取程序所在路径判断是否为根目录并分别处理 程序在根目录下 If DirApp.PathCoolToolBar.ocxThen程序路径下有无控件无则生成控件 以二进制方式写生成控件CoolToolBar.ocx到主程序所在的目录 Open App.PathCoolToolBar.ocxFor Binary As1 For Counter0 To OCXSIZE-1注意因为从0 Byte开始因此以文件大小-1Byte为终值 Put1OcxCounter Next Counter Close1 End if Else 程序不在根目录下 If DirApp.PathCoolToolBar.ocxThen程序路径下有无控件无则生成控件 以二进制方式写生成控件CoolToolBar.ocx到主程序所在的目录 Open App.PathCoolToolBar.ocxFor Binary As1 For Counter0 To OCXSIZE-1注意因为从0 Byte开始因此以文件大小-1Byte为终值 Put1OcxCounter Next Counter Close1 End if End if Form1.VisibleTrue主程序所用控件已经生成显示主窗体进入主程序。
End Sub 注意将以上
代码作为一个模块添加到工程中并在工程-工程属性设置中将启动对象选为Sub Main即上面的脱壳
代码。
然后编译生成EXE文件将该EXE文件拷贝到其他没有安装所用控件的
计算机上运行一下看看是否实现了控件携带之金蝉脱壳。
如果是那么OK以上为使用一个控件的情况使用多个控件方法基本相同不在赘述。
特别声明 1资料来源于互联网
版权归属原作者 2资料内容属于
网络意见与本账号立场无关 3如有侵权请告知立即删除。