网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.用VB编程检测当前电池使用情况.
.VB设计动画时钟.
.设置计算机名称.
.VB访问SQLServer的探讨.
.VisualBasic产生渐层的Form背景.
.建立、改变及重构Access数据库.
.教你在CoolBar中显示指定的图片.
.获取桌面窗口图象.
.让用户自行输入方程式,并计算其.
.菜鸟的数据库入门.
.用VB测定可移动驱动器是否准备好.
.一个关于乘法溢出问题的探讨.
.字符串的一些操作.
.VB调用C程序动态链接库的方法.
.判断一个32位程序是否结束.
.得知目前Mouse所指的MenuItem是哪.
.VB创建、修改、删除WIN2K用户.
.用VisualBasic开发绿色软件的探讨.
.无框窗体移动最简法(程序).
.VB编程步步高-打印篇(二).

VB中访问API函数之防错技巧

发表日期:2006-2-27


功能强大的API(应用程序接口)函数对于VB(VisualBasicForWindows)程序员来说,不愧是很好的编程工具,然而使用API函数的程序员也许都遇到这样的现象。在VB集成环境下,程序运行后,出现一错误信息对话框,按确定键后系统自动退出VB集成环境,此时如果你的程序尚未存盘,那末很遗憾挽回损失已回天乏力。最后一次存盘之后的程序都不复存在。这是你对API函数使用不当引起的一般保护故障(GPF)。
当一个GPF错发生时,你应允许Windows关闭你的应用。有些情况下你可能需要退出Windows或者重新引导系统。出错程度视哪里内存被破坏而定。DLL(动态链接库)函数中的类型不一致等错误是GPF错的主要原因。这些错误会导致GPF甚至使Windows系统完全崩溃(需要重新引导系统)。下面谈避免GPF的一些技巧。
用别名来提供强类型检查是避免GPF的有效措施之一。有些情况下,DLL函数可以接受多种类型,LoadCursor函数就是这样一个例子,其定义如下:
HCURSORLoadCursor(hInstance,lpCursorName)
这里HCURSOR是一个指向光标对象的16位句柄,hInstance是一个16位实例句柄,lpCursorName是光标的名字或者是光标资源的32位整数ID。为了支持两种类型的lpCursorName参数。VB有必要包含如下两个声明:
DeclareFunctionLoadCursorLib"USER"(ByValhInstanceAsInteger,ByVallpCursorNameAsString)AsInteger和
DeclareFunctionLoadCursorLib"USER"(ByvalhInstanceAsInteger,ByVallpCursorNameAsLong)AsInteger
但是,这两个声明不能在一个程序中同时存在,因为VisualBasic会报重复声明错。我们知道,AsAny声明可使得任何参数都可以传递给DLL函数,因此可以如下声明:
DeclareFunctionLoadCursorLib"USER"(ByValhInstanceAsInteger,ByVallpCursorNameAsAny)AsInteger
上述声明意味着VisualBasic能支持一个参数可接受多种类型的DLL函数,然而这就可能带来各种灾难性的后果,每当偶然情况下用不正确的参数调用该函数时,都可以引发一个GPF,我们可以这样进行严格的类型检查并且帮助防止这类问题。
这种方法就是在函数的声明中使用Alias技巧,看看下面的两个声明:
DeclareFunctionLoadCursorByNamelib"USER"Alias"LoadCursor"(ByValhInstanceAsInteger,ByVallpCursorNameAsString)AsInteger和
DeclareFunctionLoadCursorByIDLib"USER"Alias"LoadCursor"(ByvalhInstanceAsInteger,ByVallpCursorNameAsLong)AsInteger
LoadCursorByName用字符串做lpCursorName参数访问DLL函数LoadCursor,而LoadCursorByID访问同样的DLL函数LoadCursor,但是用长整型做lpCursorName参数,这两个函数都对lpCursorName参数进行严格的类型检查,使VisualBasic能在调用DLL函数之前识别出不正确的变量类型,最大限度地减少引起GPF或者导致系统崩溃的机会。
除此之外,使用API函数时运行之前最好先存盘,仔细检查调用API函数的参数与声明的类型是否一致,以及严格检查参数是否有效都能减少引发GPF或者系统崩溃。->

上一篇:如何提高调用WindowAPI函数编程技巧 人气:3453
下一篇:在VB中建立可旋转的文本特效 人气:3223
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐