由於API過程存在於VisualBasic應用程序之外的文件中,在使用時必須指定過程的位置和調用參數。可以用Declare語句提供這類信息。在聲明了API過程之後,可以把它當做VisualBasic自己的過程使用。
如果在VisualBasic中直接調用API,那麼VisualBasic環境下固有的安全機制將受到不利影響。這意味著在測試和調試程序時可能會遇到更多的系統故障。為了減少這種危險,在聲明API過程、傳遞參數和指定類型的時候務必要小心。無論在什麼情況下,一定要經常保存已經完成的工作。API可以提供不同凡響的功能,但是要用好它也不容易。
下例將演示如何調用WindowsAPI中的過程。調用函數SetWindowText來改變一個窗體的標題欄。當然,在實際應用中,通常總是利用VisualBasic的Caption屬性來改變標題欄。該示例的目的在於說明如何聲明並調用過程。
聲明API過程
首先,在模塊的聲明部分對過程進行聲明:
PrivateDeclareFunctionSetWindowTextLib"user32"_
Alias"SetWindowTextA"(ByValhwndAsLong,_
ByVallpStringAsString)AsLong
過程的精確語法定義可以用APIViewer應用程序找到,在Win32api.txt文件中也可以找到它。如果將Declare放在Form或者Class模塊內,那麼必須在它的前面加上Private關鍵字。同一個API過程在一個工程中只需聲明一次;然後可以任意調用。
調用API過程
在聲明了函數之後,調用它的方式與標准的VisualBasic函數相同。在下例中,FormLoad事件調用了上面聲明的過程。
PrivateSubForm_Load()
SetWindowTextForm1.hWnd,"WelcometoVB"
EndSub
在運行這段代碼時,函數首先使用hWnd屬性確定要修改標題欄的窗口(Form1.hWnd),然後將標題欄修改為“WelcometoVB”。
需要牢記的是:VisualBasic不能驗證傳遞到API過程的值是否正確。如果傳遞了錯誤的值,那麼過程將出錯,並可能因此導致VisualBasic應用程序停止運行。這樣就不得不重新加載和啟動應用程序。在測試API過程時千萬要小心,一定要經常地保存自己的工作。
極少數API調用能夠識別缺省的Variant數據類型。最好聲明具體的變量類型並使用OptionExplicit,這樣,API的可靠性要高得多。->