电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 站长之家-> 站长心得
vb中调用windowsapi的注意事项_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
API说到底就是一系列的底层函数,是系统提供给用户用于进入操作系统核心,进行高级编程的途径。通过在VisualBasic应用程序中声明外部过程就能够访问WindowsAPI(以及其它的外部DLLs)。在声明了过程之后,调用它的方法与调用VisualBasic自己的过程相同。

  VisualBasic(VB)作为一种高效编程环境,它封装了部分WindowsAPI函数,但也牺牲了一些API的功能。调用API时稍有不慎就可能导致API编程错误,出现难于捕获或间歇性错误,甚至出现程序崩溃。要减少API编程错误,提高VB调用API时的安全性,应重点注意下列八个问题:

  (1)指定“OptionExplicit”

  编程前最好将VB编程环境中的“RequireVariableDeclaration(要求变量申明)项选中。如果该项未被指定,任何简单的录入错误都可能会产生一个“Variant”变量,在调用API时,VB对该变量进行强制转换以避免冲突,这样一来,VB就会为字符串、长整数、整数、浮点数等各种类型传递NULL值,导致程序无法正常运行。

  (2)注意VB整数和Win32整数的区别

  在VB环境下,涉及到的所有integer(整型数),都是16位,而一旦涉及C/C++Win32文档时,则是32位,阅读与WindowsAPI函数或与32位动态链接库有关的资料或应用程序时,尤其要注意分析理解环境背景,以利于分清数据类型和数据结构,正确地声明API函数。

  (3)减少和避免使用AsAny

  虽然用AsAny的方法声明库,可使WindowsAPI函数能接受多种类型的参数,但更严重的是,即使是一个很小的错误,比如遗漏类型标识符或错误地使用了ByVal关键字,都可能导致系统崩溃或很难发现的其他数据错误。

  (4)注意检查参数类型

  API错误中,除了因遗漏ByVal关键字导致的错误外,大约有50%是因为声明中有不正确的参数类型。在Win32环境下,无论是8位、16位,还是32位数值变量都是以32位传递,如果同时使用,则很难发现其中错误。如果声明的参数类型不同,被VB视为Variant传递给API函数,会出现“错误的DLL调用规范”的消息。

  (5)勿忘ByVal,确保函数声明的完整性

  ByVal是“按值”调用,参数传递时,不将指向DLL的指针传递给参数变量本身,而是将传递参数值的一份拷贝传递给DLL。比如传递字符串参数时,VB与DLL之间的接口支持两种类型的字符串,如未使用ByVal关键字,VB将指向DLL的函数指针传递给一个OLE2.0字符串(即BSTR数据类型),而WindowsAPI函数往往不支持这种数据类型,导致错误。而使用ByVal关键字后VB将字符串转变换成C语言格式的“空终止”串,被API正确使用。

  (6)重新检查函数名

  在Win16环境下,API函数的名字不要求区分大小写,而在Win32环境下,则有此要求。在一个DLL函数里找不到声明的函数时,有必要检查一下函数名,对于管理字符串的函数,是否遗漏了A和W前缀。

  (7)预先初始化字符串,以免造成冲突

  如果API函数要求一个指向缓冲区的指针,以便从中载入数据,而此时传递的是字符串变量,应该先初始化字符串长度。因为API无法知道字符串的长度——API默认已为其分配有足够的长度。没有初始化字符串,分配给字符串的缓冲区有可能会不足,API函数将有可能在缓冲区末尾反复改写,内存里字符串后面的内容将会改写得一塌糊涂。程序表现为突然终止或间歇性错误。

  (8)跟踪检查参数、返回类型和返回值

  VB具有立即模式和单步调试功能,利用这个优势,确保函数声明的类型明确(API不返回Variant类型),通过跟踪和检查参数的来源及类型,可以排除参数的错误传递。许多API函数都有返回结果,指出自己是否执行成功。你若要对返回结果进行测试,用VB的Err对象的LastDllError方法可查阅这些信息,对错误可针对API函数调用,取回API函数GetlastError的结果,以修改声明,达到正确调用API函数之目的。

->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·最差的用户体验真的是不知道该"做什么"吗?_站长心得
·做完网站别忘调试----网站调试全攻略2_站长心得
·八大要领 做网站就这么简单2_站长心得
·八大要领 做网站就这么简单3_站长心得
·初学网站制作须知道什么是静态网页_站长心得
·高分辨率下界面布局的解决方案1_站长心得
·高分辨率下界面布局的解决方案2_站长心得
·高分辨率下界面布局的解决方案3_站长心得
·高分辨率下界面布局的解决方案4_站长心得
·网页切片算法的若干问题_站长心得

最新文章
·新手必看之网站的定位篇_站长心得
·站长如何做好自己的客服中心_站长心得
·买卖中小网站交易的一些细节问题_站长心得
·为什么成功的论坛和博客无法双管其下_站长心得
·像我一样的菜鸟站长常犯的几种错误_站长心得
·桌面壁纸站的建设_站长心得
·谈谈我的下载站日ip5000 月收入3000的经验_站长心得
·如何来做好你的第一个网站_站长心得
·专业的网站流量快速提升的方法_站长心得
·谈谈三年来做站的经验_站长心得


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号