API函数在VB开发中的应用

2016-02-19 13:19 7 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享API函数在VB开发中的应用吧。

【 tulaoshi.com - 编程语言 】

VB作为快速开发Windows下的编程工具,已经为越来越多的开发者采用。但如果要开发出专业的Windows软件,还需采用大量的API函数,以下结合笔者开发管理软件的经验谈几点体会。
  程序中判定Windows的版本
  众所周知,Windows3.x各版本或多或少会有些差别,为了使开发程序避免出现莫名其妙的错误,最好在程序运行前自动判定Windows的版本。采用API提供的函数getversion很容易实现这一点。函数声明如下:
  DeclareFunctionGetVersionLib"Kernel"()AsInteger
  此函数没有参数,返回值为Windows的版本号,其中版本号的低位字节为Windows的主版本号,版本号的高位字节返回Windows的次版本号。判别过程如下:
  PrivateSubForm_Load()
  DimverAsInteger
  DimmajorAsInteger
  DimminorAsInteger
  Ver=GetVersion()
  major=verAnd&HFF
  minor=(verAnd&HFF00)256
  Ifmajor3Andminor10Then
  MsgBox"版本不正确!"
  ExitSub
  EndIf
  EndSub
  程序中判断Windows的安装目录
  一般VB开发出来的程序包含vbrun300.dll等辅助文件和.vbx文件,它们均需安装到Windows目录(c:windows)或Windows的系统目录(c:windowssystem)下,但因为用户安装Windows时可能会改变Windows的目录名(如c:windows),使用安装软件后,不能正确运行.API中提供的GetwinDowsdirectory或GetSystemDirectory较好地解决了这个问题。函数声明如下:
  
  DeclareFunctionGetSystemDirectoryLib"Kernel"(ByVallpBufferAs
  String,ByValnSizeAsInteger)AsInteger
  
  其中参数lpbuffer为字串变量,将返回实际Windows目录或Windows的系统目录,nsize为lpbuffer的字串变量的大小,函数返回值均为实际目录的长度。检查函数如下:
  
  Functioncheckdir()AsBoolean
  DimwindirAsString*200
  DimwinsysAsString*200
  DimwinlAsInteger
  DimwinsAsInteger
  Dims1AsString
  Dims2AsString
  winl=GetWindowsDirectory(windir,200)
  winl=GetSystemDirectory(winsys,200)
  s1=Mid$(windir,1,winl)
  s2=Mid$(winsys,1,wins)
  IfWins=0Orwins=0Then
  checkdir=False
  ExitFunction
  EndIf
  Ifs1"C:WINDOWS"Ors2"C:WINDOWSSYSTEM"Then
  checkdir=False
  ExitFunction
  EndIf
  checkdir=True
  EndFunction
  
  shell出现的问题
  通常编程时要调用外部程序,VB提供了shell()函数,但是如果shell调用的外部程序找不到,则运行的程序失去控制,VB给出提示"filenotfound",改变这种现象,要在程序中加入onerrorgoto,比较麻烦,API函数中的winexec很好地解决了这个问题。函数声明如下:
  
  DeclareFunctionWinExecLib"Kernel"(ByVallpCmdLineAsString,
  ByValnCmdShowAsInteger)AsInteger
  
  其中lpCmdline为调用的外部文件名,NcmdShow为外部程序的运行状态,如隐藏窗口、最小化窗口等等。如返回值大于32表示执行功能,否则返回错误码。例程如下:
  
  subcommand1_click
  dsiasinteger
  i=winexec("notepad.exe","c:wst.txt",9)
  '参数9即SW_RESTORE,也就是激活并显示窗口
  ifi32then
  msgbox"调用正确!!"
  else
  msgbox"调用错误!!"
  endif
  endsub->

来源:https://www.tulaoshi.com/n/20160219/1603805.html

延伸阅读
原则上,只改这一次,下一次开机会还原,但假如需重开机,才会Update Registry中的设定,并重开机。 !-- frame contents -- !-- /frame contents -- 假如要永久设定其设定值,请将 b = ChangeDisplaySettings(DevM, 0) 改成 b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) 注: ...
标签: PHP
我们可以使用PHP来编写WAP程序,比如开发动态的WML页面,不过条件是需要将输出的标签或语句限制在WAP微型浏览器可接受的范围之内。而且,PHP 还可以在一个HTML(及HDML)文件中编写出既适合于HTML(及HDML),也适合于WML的内容。PHP的源代码对于WAP客户端来说是不可见的,所以我们可以针对HTML浏览器输出HTML页面,而针对WAP浏览器...
我在调用api时,发现了下面了几个问题: 1.SystemParameterInfo vb的api声明工具中第三个参数为 ByRef lpvParam as any. 但若想用来更改桌面壁纸时必须声明为ByVal lpvParam as any. 2.SendMessage 当声明为Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As ...
在VB中用API实现多媒体主要是调用Windows的mmsystem.dll库。以下为调用API的声明(这些代码放在程序的声明部分中): 1.′播放CD和AVI所需要的声明。 DeclareFunctionmciSendStringLib″MMSYSTEM″(ByVal lpstrCommandasString,ByVallpstrReturnStrasAny,By ValwRetumLenasInteger,ByValhCallBackasInteger)as Long ...
标签: Web开发
AJAX无疑是2005年炒的最热的Web开发技术之一,当然,这个功劳离不开Google。我只是一个普通开发者,使用AJAX的地方不是特别多,我就简单的把我使用的心得说一下。(本文假设用户已经具有JavaScript、HTML、CSS等基本的Web开发能力) [AJAX介绍] Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。Web页面不用打断交互流程进行重新...

经验教程

743

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部