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

API函數在VB中的應用

編輯:VB綜合教程
所謂API就是“應用程序接口”(ApplicationProgramingInterface),是一些用C語言編寫,由操作系統自身調用的函數。WindowsAPI函數由許多“動態鏈接庫”或DLL組成。在32位Windows中,核心的Windows
  APIDLL有如下一些:
  gdi32.dll----圖形顯示界面的API。
  kernel32.dll----處理低級任務(比如內存和任務管理)的API。
  user32.d11----處理窗口和消息(VisualBasic程序員能把其中一些當作事件訪問)的API。
  還不斷有新的API出現,處理新的操作系統擴展,比如E-MAIL、聯網和新的外設。
  由於WindowsAPI函數不是VisualBasic的內部函數,所以在使用它們之前必須顯式地加以聲明。要想得到正確格式化的函數聲明,可以訪問WINAPI目錄下的文件WIN32API.TXT。
  本文只對Win95系統的API函數加以說明並調用Win95的內置功能。
  重新啟動計算機的實現
  在Windows下安裝過程序的用戶可能都有這樣的體會,當安裝完某些應用程序後,安裝程序會要求重新啟動計算機以使設置生效。那麼,如果要用VB程序重新啟動計算機該如何實現呢?其實利用ExitWindowsEx函數即可。
  程序的編寫
  1.首先運行VB,然後新建一個工程(工程類型為標准EXE),然後雙擊Form1窗體,進入代碼(Code)輸入框,在其中輸入:
  PrivateDeclareFunctionExitWindowsExLib"user32"(ByValuFlagsAsLong,ByValdwReserved
  AsLong)AsLong
  2.點擊“工具箱”中的commandbutton(命令按鈕)工具,即可在窗體Form1中加入一個命令按鈕,然後將該按鈕屬性中的Caption值定義為“重新啟動”。完成之後雙擊該按鈕,進入代碼(code)輸入框輸入以下代碼:
  PrivateSubCommand1_Click()
  ExitWindowsEx&H43,0
  EndSub
  程序的執行
  程序輸入完成後,點擊VB“運行”菜單中的“啟動”或“全面編譯”命令,然後點擊“重新啟動”按鈕,即可重新啟動計算機。
  磁盤格式化
  在Windows9X中,當用鼠標右鍵單擊“我的電腦”中的“3.5軟盤A”然後在出現的右鍵菜單中選擇“格式化”選項,就將彈出標准的“磁盤格式化”窗口。下面我們來看看如何在應用程序中利用函數輕松調用Windows95標准的“磁盤格式化”窗口,實現對磁盤相應的操作功能。
  程序的編寫
  1.與上例相同,首先運行VB,新建一個標准工程,然後利用“工具箱”在Form1窗體中加入一個命令按鈕對象,將該命令按鈕屬性中的Caption值定義為“軟盤格式化”。完成之後雙擊該按鈕,在代碼輸入框中輸入以下代碼:
  PrivateSubCommand1_Click()
  CallFormatFloppy'調用FormatFloppy過程
  EndSub
  2.然後用鼠標右擊窗體,選擇右鍵菜單中的“添加/添加模塊”選項,然後在出現的選擇框中選擇“模塊”類型,接著在出現的模塊代碼輸入框中加入以下代碼:(注:模塊是指一組聲明的集合,其後為過程)
  '通用聲明
  PublicConstWM_CLOSE=&H10
  DeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassNameAsAny,ByVal
  lpWindowNameAsAny)AsLong
  DelareFunctionGetWindowsDirectoryLib"kernel32"Alias"GetWindowsDirectoryA"(ByVallpBuffer
  AsString,ByValnSizeAsLong)AsLong
  DeclareFunctionSetWindowPosLib"user32"(BvValhwndAsLongByValhWndInsertAfterAsLong,
  ByValXAslong,ByValyAsLong,ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong
  DeclareFunctionGetDesktopWindowLib"user32"()AsLong
  DeclareFunctionLockWindowUpdateLib"user32"(ByValhwndLockAsLong)AsLong
  DeclareFunctionGetWindowRectLib"user32"(ByVayhwndAsLong,lpRectAsRECT)AsLong
  DeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)
  TypeRECT
  LeftAsLong
  TopAsLong
  RightAsLong
  BottomAsLong
  EndType
  TypePOINTAPI
  XAsLong
  yAsLong
  EndType
  ConstSWP_NOSIZE=&H1
  ConstSWP_NOZORDER=&H4
  'FormatFloppy()過程聲明
  PublicSubFormatFloppy()
  DimsBufferAsString,WindirAsString,ProcsAsString,X
  DimlResultAsLong
  sBuffer=String$(255,0)
  lResult=GetWindowsDirectory(sBuffer,Len(sBuffer))
  Windir=Trim(sBuffer)
  Procs=Left(Windir,lResult)&" undll32.exeshell32.dll,SHFormatDrive"
  CallCenterDialog("Format-3?Floppy(A:)")
  X=Shell(Procs,1)
  CallCenterDialog("Format-3?Floppy(A:)")
  k=LockWindowUpdate(0)
  EndSub
  'CenterDialog過程聲明
  PublicSubCenterDialog(WinTextAsString)
  DoEvents
  OnErrorResumeNext
  DimD3AsLong
  D3=LockWindowUpdate(GetDesktopWindow())
  Dimwdth
  Dimhght
  DimScrwdth
  DimScrhght
  DimlpDlgRectAsRECT
  DimlpdskrectAsRECT
  DimhTaskBarAsLong
  hTaskBar=FindWindow(0&,WinText)
  CallGetWindowRect(hTaskBar,lpDlgRect)
  wdth=lpDlgRect.Right-lpDlgRect.Left
  hght=lpDlgRect.Bottom-lpDlgRect.Top
  CallGetWindowRect(GetDesktopWindow(),lpdskrect)
  Scrwdth=lpdskrect.Right-lpdskrect.Left
  Scrhght=lpdskrect.Bottom-lpdskrect.Top
  X=(Scrwdth-wdth)/2
  y=(Scrhght-hght)/2
  CallSetWindowPos(hTaskBar,0,X,y,0,0,SWP_NOZORDEROrSWP_NOSIZE)
  DoEvents
  EndSub
  程序的執行
  程序輸入完成後,點擊VB“運行”菜單中的“啟動”或“全面編譯”命令,點擊“軟盤格式化”按鈕後選擇要格式化的容量,即可對3.5英寸盤進行格式化操作。
  調用版本信息框
  在Windows程序中,點擊“幫助”菜單中的“關於XXX”選項後,就會彈出該程序的版本信息框。其實,在
  VB中,調用shellAbout函數不但可以實現標准的軟件版本信息框,還可以隨意更改其中的內容呢!
  程序的編寫
  1.與前面類似,首先運行VB並新建一個標准工程,然後雙擊Form1窗口,在代碼輸入框中輸入ShellAbout過
  程代碼:
  PrivateDeclareFunctionShellAboutLib"shell32.dlI"Alias"ShellAboutA"(ByValhWndAsLong,ByValszAppAsString,ByValszOtherStuffAsString,ByValhIconAsLong)AsLong
  其中ShellAbout聲明如下:
  HWnd設置窗口句柄,szApp設置窗口的“Caption”,szOtherStuff在“版權所有”和“使用權”之間的空白
  處增加額外說明。
  2.然後利用“工具箱”在Form1窗體中加入一個命令按鈕對象,將該命令按鈕屬性中的Caption值定義為“版
  本信息框”。完成之後雙擊該按鈕,在代碼輸入框輸入以下代碼:
  PrivateSubCommand1_Click()
  CallShellAbeut(hWnd,"何發武天使工作室!","版本信息框"&VbCrLf&"上帝與你同在!阿彌陀佛!",0)
  EndSub
  程序的執行
  程序輸入完成後,點擊VB“運行”菜單中的“啟動”或“全面編譯”命令,點擊“版本信息框”按鈕,即可查看當前軟件的版本信息。
  查看“屬性”
  在Windows9X中,增加了一個全新的概念--“屬性”,每個對象都擁有自己的“屬性”,在“屬性”窗口裡是關於對象的詳細描述,並且不同的對象“屬性”窗口的說明是不同的。我們可以用ShellExecuteEX函數直接調用“屬性”標准窗口。下面的程序功能相當於用鼠標右鍵單擊根目錄下的“Autoexec.bat”並選擇“屬性”時,彈出的標准“屬性”窗口。
  程序的編寫
  1.首先運行VB,然後新建一個標准工程,然後利用“工具箱”在Form1窗體中加入一個命令按鈕對象,將該命令按鈕屬性中的Caption值定義為“屬性按鈕”。完成之後雙擊該按鈕,在代碼輸入框中輸入以下代碼:
  PrivateSubCommand1_Click()
  DimrAsLong
  DimFileNameAsString
  FileName="c:autoexec.bat"
  r=ShowProperties(FileName,Me.hwnd)
  Ifr<=32ThenMsgBox"Error!NOc:autoexec.batFile"
  EndSuB
  2.然後用鼠標右擊窗體,選擇右鍵菜單中的“添加/添加模塊”選項,然後在出現的選擇框中選擇“模塊”類型,接著在出現的模塊代碼輸入框中加入以下代碼:
  '通用聲明
  OptionExplicit
  TypeSHELLEXECUTEINFO
  cbSizeAslong
  FmaskAsLong
  hwndAsLong
  lpVerbAsString
  lpFileAsString
  lpParametersAsString
  lpDirectoryAsString
  nShowAsLong
  hInstAppAsLong
  lpIDListAsLong
  lpClassAsString
  hkeyClassAsLong
  dwHotKeyAsLong
  hIconAsLong
  hProcessAsLong
  EndType
  PublicConstSEE_MASK_INVOKEIDLIST=&HC
  PublicConstSESE_MASK_NOCLOSEPROCESS=&H40
  PublicConstSEE_MASK_FLAG_NO_UI=&H400
  DeclareFunctionShellExecuteEXLib"shell32.dll"Alias"ShellExecuteEx"(SEIAsSHELLEXECUTEINFO)AsLong
  'ShowProperties過程
  PublicFunctionShowProperties(FileNameAsString,OwnerhWndAsLong)AsLong
  DimSEIASSHELLEXECUTEINFO
  DimrAsLong
  WithSEI
  .cbSize=Len(SEI)
  .fMask=SEE_MASK_NOCLOSEPROCESSOrSEE_MASK_INVOKEIDLISTOrSEE_MASK_FLAG_NO_UI
  .hwnd=OwnerhWnd
  .lpVerb="properties"
  .lpFile=FileName
  .lpParameters=vbNullChar
  .lpDirectory=vbNullChar
  .nShow=0
  .hInstApp=0
  .lpIDList=0
  EndWith
  r=ShellExecuteEX(SEI)
  ShowProperties=SEI.hInstApp
  EndFunction
  程序的執行
  程序輸入完成後,點擊VB“運行”菜單中的“啟動”或“全面編譯”命令,點擊“屬性按鈕”按鈕,即可查看C:AUTOEXEC.BAT的屬性。->

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