大家都知道vb調(diào)用的api并不是像C/C++、delphi那樣通過(guò)函數(shù)原形和靜態(tài)連接庫(kù)來(lái)
引入的。vb調(diào)用api是通過(guò)Declare語(yǔ)句聲明來(lái)實(shí)現(xiàn)的,這種方式的的調(diào)用從實(shí)現(xiàn)上和性
能上都沒(méi)有C/C++那些直接引入的好.以下是vb調(diào)用api的大體實(shí)現(xiàn)方式:
首先,vb為每一條api分配4個(gè)字節(jié)的存儲(chǔ)空間用來(lái)存放函數(shù)指針,并且保存api的函
數(shù)信息(dll名稱很函數(shù)名稱);
其次,在我們每次調(diào)用api時(shí)vb先判斷4個(gè)字節(jié)的存儲(chǔ)區(qū)里是否存放有函數(shù)指針,如
果有就把函數(shù)按stdcall的方式把參數(shù)壓棧并調(diào)用它;如果沒(méi)則先調(diào)用DllFunctionCall
(在msvbvm6.dll中)加載相應(yīng)函數(shù)的dll獲取函數(shù)指針并按前述方式調(diào)用它.
所以vb調(diào)用在調(diào)用api在檢查函數(shù)指針上消耗了性能并增加了程序的代碼量.那么有
沒(méi)直接使vb像C/C++那樣引入api的方法呢?
當(dāng)然有了,那就是通過(guò)制作API類型庫(kù)再在vb中引用此類型庫(kù)的方法.網(wǎng)上也有很多
這樣的類型庫(kù)(如:WIN.TLB,VBAPI.tlp等等),但并不是很全面所以很多時(shí)候要實(shí)現(xiàn)vb直接
引入api還是得自己量身定做類型庫(kù),可惜要制作類型庫(kù)必須借助IDL語(yǔ)言或ODL語(yǔ)言,而對(duì)
于很多vb用戶來(lái)說(shuō)這兩們語(yǔ)言都是很少接觸且國(guó)內(nèi)這方面的書也很少.VB6ApiTypeLibMaker
就是為了解決以上問(wèn)題而寫的編程工具.只要你在vb中會(huì)使用api,她就可以把你的api翻
譯成odl語(yǔ)言源程序并編譯成類型庫(kù),大大的簡(jiǎn)化了日常的編程工作而且提升了vb程序的
性能.
聯(lián)系客服