《用VB编写绿色软》word版.doc_第1页
《用VB编写绿色软》word版.doc_第2页
《用VB编写绿色软》word版.doc_第3页
《用VB编写绿色软》word版.doc_第4页
《用VB编写绿色软》word版.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用VB编写绿色软件用VB编写绿色软件2010-12-07 12:37用VB编写绿色软件我认为的绿色软件就是免安装,短小精干的软件,目前的大部分共享软件都属于此类(或向绿色软件靠拢)。连比较大的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资源()。第四、软件开发完毕后,最好用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 Libkernel32AliasGetSystemDirectoryA(ByVal lpBuffer As String,ByVal nSize As Long)As 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=LoadResData(101,OCX)注释:用以从资源(.res)文件装载若干可能类型的数据,并返回一个Byte数组FileNum=FreeFile Open TempDir&nsck.ocxFor Binary Access Write As#FileNum注释:新建文件(把Winsock控件复制到指定目录下)Put#FileNum,TempFile Close#FileNum注释:Shellregsvr32&TempDir&nsck.ocx,vbNormalFocus注释:注册控件,有弹出对话框Shellregsvr32&TempDir&nsck.ocx/s,vbNormalFocus注释:注册控件,无弹出对话框MsgBox注册成功,现在本程序可正常运行了!,vbOKOnly,注册控件Unload Me End Sub Public Function GetWinSysDir()注释:定义读取WinddowsSystem的所在目录的函数Dim SAs String,Length As Long S=String(MAX_PATH,0)注释:赋值Length=GetSystemDirectory(S,MAX_PATH)注释:S为取得目录,MAX_PATH为长度S=Left(S,InStr(S,Chr(0)-1)注释:去掉多余的空格GetWinSysDir=S End Function注释:补充:S和MAX_PATH的值是可以随便赋的,注释:如:Dim SAs String*20注释:Length=GetSystemDirectory(S,20)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 OCXSIZE=57344欲生成的控件大小是57344Byte,名字为CoolToolBar.ocx Sub Main()Dim Ocx()As ByteOCX是个Btye类型的数组Dim Counter As Long Ocx=LoadResData(101,CUSTOM)将自定义资源中101号资源读入数组OCX注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为CUSTOM而不是帮助所说的数字10 If Right(App.Path,1)=Then读取程序所在路径,判断是否为根目录并分别处理程序在根目录下If Dir(App.Path&CoolToolBar.ocx)=Then程序路径下有无控件,无则生成控件以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录Open App.Path&CoolToolBar.ocxFor Bi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论