谈谈VB.NET API函数应用

开发 后端
你会运用VB.NET API函数吗?本文将结合开发管理软件来讲述API函数,主要侧重于在程序中判定Windows的版本 ,还有 程序中判断Windows的安装目录的问题讲解。

大家都知道VB开发的好处,而且它在Windows环境下越来越多的开发者采用。但如果要开发出专业的Windows软件,还需采用大量的VB.NET API函数,以下结合开发管理软件的经验谈几点体会。

程序中判定Windows的版本
众所周知,Windows3.x各版本或多或少会有些差别,为了使开发程序避免出现莫名其妙的错误,***在程序运行前自动判定Windows的版本。采用API提供的函数getversion很容易实现这一点。函数声明如下: Declare Function GetVersion Lib"Kernel"() As Integer 此函数没有参数,返回值为Windows的版本号,其中版本号的低位字节为Windows的主版本号,版本号的高位字节返回Windows的次版本号。判别过程如下:

  1. Private Sub Form_Load ()   
  2. Dim ver As Integer   
  3. Dim major As Integer   
  4. Dim minor As Integer   
  5. Ver = GetVersion ()   
  6. major = ver And &HFF   
  7. minor = (ver And &HFF00) \ 256   
  8. If major <> 3 And minor <> 10 Then   
  9. MsgBox "版本不正确!"   
  10. Exit Sub   
  11. End If   
  12. End Sub  

程序中判断Windows的安装目录
一般VB开发出来的程序包含vbrun300.dll等辅助文件和.vbx文件,它们均需安装到Windows目录(c:\windows)或Windows的系统目录(c:\windows\system)下,但因为用户安装Windows时可能会改变Windows的目录名(如c:\windows),使用安装软件后,不能正确运行.API中提供的GetwinDowsdirectory或GetSystemDirectory较好地解决了这个问题。函数声明如下:

  1. Declare Function GetSystemDirectory Lib "Kernel"(ByVal lpBuffer As   
  2. String,ByVal nSize As Integer) As Integer  

其中参数lpbuffer为字串变量,将返回实际Windows目录或Windows的系统目录,nsize为lpbuffer的字串变量的大小,函数返回值均为实际目录的长度。检查VB.NET API函数如下:

  1. Function checkdir() As Boolean   
  2. Dim windir As String * 200   
  3. Dim winsys As String * 200   
  4. Dim winl As Integer   
  5. Dim wins As Integer   
  6. Dim s1 As String   
  7. Dim s2 As String   
  8. winl = GetWindowsDirectory(windir,200)   
  9. winl = GetSystemDirectory(winsys,200)   
  10. s1 = Mid $(windir,1,winl)   
  11. s2 = Mid $(winsys,1,wins)   
  12. If Wins = 0 Or wins = 0 Then   
  13. checkdir = False   
  14. Exit Function   
  15. End If   
  16. If s1 <> "C:\WINDOWS" Or s2 <> "C:\WINDOWS\SYSTEM" Then   
  17. checkdir = False   
  18. Exit Function   
  19. End If   
  20. checkdir = True   
  21. End Function  

shell 出现的问题
通常编程时要调用外部程序,VB提供了shell()函数,但是如果shell调用的外部程序找不到,则运行的程序失去控制,VB给出提示"filenotfound",改变这种现象,要在程序中加入onerrorgoto,比较麻烦,VB.NET API函数中的winexec很好地解决了这个问题。函数声明如下:

  1. Declare Function WinExec Lib "Kernel"(ByVal lpCmdLine As String,   
  2. ByVal nCmdShow As Integer) As Integer  

其中lpCmdline为调用的外部文件名,NcmdShow为外部程序的运行状态,如隐藏窗口、最小化窗口等等。如返回值大于32表示执行功能,否则返回错误码。例程如下:

  1. sub command1_click   
  2. ds i as integer   
  3. i=winexec("notepad.exe","c:\wst.txt",9)   
  4. '参数9 即SW_RESTORE,也就是激活并显示窗口   
  5. if i>32 then   
  6. msgbox "调用正确!!"   
  7. else   
  8. msgbox "调用错误!!"   
  9. end if   
  10. end sub  

【编辑推荐】

  1. 介绍VB.NET绘图方法的三个方面
  2. 快捷简单的VB.NET编程事件方法介绍
  3. 简单简述VB.NET绘制图形
  4. 三个案例揭秘VB.NET语法规则
  5. VB.NET实例教程对关于Array问题的解决
责任编辑:田树 来源: 乐博网
相关推荐

2009-11-10 12:12:57

VB.NET函数

2009-11-03 12:52:38

VB.NET Wind

2009-10-15 17:50:48

VB.NET调用API

2009-10-23 10:01:28

VB.NET申明Win

2009-10-19 17:42:31

VB.NET API函

2009-10-09 14:55:02

VB.NET数组

2009-11-10 15:36:24

VB.NET命名约定

2009-10-15 17:50:48

VB.NET Spli

2009-11-03 13:02:28

VB.NET Wind

2010-01-22 16:07:26

VB.NET Mid函

2010-01-12 18:40:22

VB.NET Form

2009-10-21 10:45:50

VB.NET Quic

2010-01-18 18:20:49

VB.NET使用API

2010-01-12 16:20:44

VB.NET类

2009-10-09 15:59:41

VB.NET对象

2009-11-10 16:55:05

VB.NET调用API

2009-10-12 12:54:58

VB.NET声明API

2009-11-10 16:46:52

VB.NET指针应用

2010-01-07 15:25:11

VB.NET数组

2009-11-02 15:57:36

VB.NET WEB
点赞
收藏

51CTO技术栈公众号