程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> API函數在VB開發中的應用

API函數在VB開發中的應用

編輯:VB綜合教程
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
  Ifmajor<>3Andminor<>10Then
  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,也就是激活並顯示窗口
  ifi>32then
  msgbox"調用正確!!"
  else
  msgbox"調用錯誤!!"
  endif
  endsub->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved