当我们安装完VB6中文版后,程序组里会生成两个快捷方式:一个是用来制作安装程序的Package & Deployment 向导www.shengfang.org,另外一个是用来查看WINDOWSAPI函数的API 文本浏览器,经过这一段时间的VB6编程开发,发现这两个工具都存在一些问题。 一、Package & Deployment 向导 我制作了一个软件,打包后进行测试,发现在本人WIN2K和WINXP下可以正常安装,然而在别人的WINXP很少能够正常安装,报告文www.shengfang.org件找不到,实在让人奇怪。经过一番折腾,终于找到了原因。 使用向导打包后会生成一个CAB文件,安装过程中它需要先将其解压到临时目录然后再安装,我们一般安装WIN2K后默认的用户名就是Administrator,临时目录是Documents and Settings\Administrator\Local Settings\Temp,而WINXPwww.shengfang.org在安装时会提示输入一个超级用户名称,我想大部分人都是输入自己的中文名吧,临时目录就成了Documents and Settings\斯蒂芬\Local Settings\Temp,而我习惯将临时目录改为我指定的目录M:\TEMP,因此出现了在我的机器上安装正常而别人的WINXP下很少能够正常安装的问题。 看来使用VB6自带的打包工具是不行www.shengfang.org了,只能使用INSTALLSHIELD等第三方工具了,经过比较,发现IS5.0版本也会有同样问题,而IS7似乎不能在WIN98下使用,所以建议使用INSTALLSHIELD6.X版本(不过6.1版本自带的微软数据访问组件版本为2.0,可以复制MDAC_TYP2.5覆盖它)。 当然不是说Package & Deployment 向导就一点用处也没有,我先通过它进行打包,然后根据产生的SETUP.LS文件找到相关文件以及注www.shengfang.org册信息,然后再和使用INSTALLSHIELD解析VB6工程文件生成的文件列表进行比较,毕竟这是VB6自带的工具,还是值得信赖的:)。 二、API 文本浏览器 打开API 文本www.shengfang.org浏览器,复制Private Declare Function GetCurrentDirectory Lib"kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long函数申明,首先发现该函数别名上没有加A,复制到VB后变成了Private Declare Function GetCurrentDirectory Lib "kernel32" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long,觉得有点奇怪。也没有理会。 输入代码: Dim s As String 看来是需要加上别名www.shengfang.org了,果然,改为Private Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectoryA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long后程序就可以了。 (VB程序进程的当前www.shengfang.org目录一般不会更改,但是如果程序自己使用了文件选择对话框等,那么就会改变了当前路径) 看来这个API浏览器中有些www.shengfang.org函数会丢失一些字母,需要我们手工添加。我把文本转成MDB数据库,用SQL查询了一下,大约有1000个函数的别名和原名一致,当然,大部分没有别名也是可以正常执行的。 字体:大 中 小 |
![]() | 永久地址 http://www.shengfang.org/blog/p/vb6error2.php |
![]() | 引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1109639294 |
2005年3月1日09:08星期二 [Dev开发]





