這篇文章主要為大家展示了“VB.NET平臺(tái)調(diào)用是怎么執(zhí)行操作”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“VB.NET平臺(tái)調(diào)用是怎么執(zhí)行操作”這篇文章吧。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了魯山免費(fèi)建站歡迎大家使用!
Windows API就是Windows系統(tǒng)的API函數(shù)簡(jiǎn)稱(chēng)(Application Program Interface,即:應(yīng)用程序接口函數(shù)),它是Windows操作系統(tǒng)提供給各種開(kāi)發(fā)基于Windows平臺(tái)應(yīng)用軟件的開(kāi)發(fā)語(yǔ)言的一些公用的函數(shù),這些函數(shù)一般都比較底層,所以當(dāng)各種開(kāi)發(fā)語(yǔ)言使用自帶的函數(shù)或類(lèi)庫(kù)已無(wú)法解決問(wèn)題時(shí),調(diào)用Windows API函數(shù)往往是一種非常直接、有效的解決方法。但由于在程序中調(diào)用Windows API函數(shù)一般都很復(fù)雜,所以對(duì)于程序員來(lái)說(shuō),是否能夠靈活的使用Windows API函數(shù),往往也是其水平高低的一個(gè)重要標(biāo)志。但自從微軟推出.NET框架以后,各種開(kāi)發(fā)基于.NET平臺(tái)下的程序語(yǔ)言,如VB.NET、Visual C#等卻很少使用Windows API函數(shù),并且微軟公司也不像以前那樣,提倡在這些.NET開(kāi)發(fā)語(yǔ)言中使用Windows API函數(shù),其主要的原因如下:
1. .NET框架所附帶的類(lèi)庫(kù).NETFrameWork SDK是一個(gè)內(nèi)容豐富、功能強(qiáng)大的軟件開(kāi)發(fā)包,各種Windows API函數(shù)所實(shí)現(xiàn)的各種功能幾乎都可以在這個(gè)軟件開(kāi)發(fā)包中找到與之對(duì)應(yīng)的部分。
2. 微軟VB.NET、Visual C#等目的是編寫(xiě)跨平臺(tái)的應(yīng)用程序,如果在VB.NET、Visual C#等中使用Windows API函數(shù),這也就注定了編寫(xiě)出的程序只能運(yùn)行于Windows平臺(tái)之下,而弱化了.NET的跨平臺(tái)能力。這也就是為什么微軟不提倡在VB.NET平臺(tái)調(diào)用 Windows API函數(shù)的原因。
雖然微軟并不提倡在VB.NET、Visual C#中調(diào)用Windows API函數(shù),但由于目前.NET框架推出時(shí)間較短,.NETFrameWork SDK中提供的類(lèi)庫(kù)還并不足以完全替換Windows API函數(shù)的所有功能,所以在某些時(shí)候,.NET開(kāi)發(fā)語(yǔ)言還是必須要調(diào)用Windows API函數(shù)。
VB.NET平臺(tái)調(diào)用、托管DLL、非托管DLL簡(jiǎn)介:
托管DLL就是能夠在公共語(yǔ)言運(yùn)行庫(kù)(Common Language Runtime,簡(jiǎn)稱(chēng)CLR)中能夠直接引用的,并且擴(kuò)展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll 等。非托管DLL就是平常所的動(dòng)態(tài)鏈接庫(kù)等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語(yǔ)言運(yùn)行庫(kù)中不能直接被調(diào)用,而需要經(jīng)過(guò).NET框架提供的平臺(tái)調(diào)用服務(wù)后才可以。
平臺(tái)調(diào)用是.NET框架為VB.NET、Visual C#等.NET開(kāi)發(fā)語(yǔ)言提供的一種服務(wù),用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)(其中包括Windows API函數(shù))。平臺(tái)調(diào)用依賴(lài)于元數(shù)據(jù)在運(yùn)行時(shí)查找導(dǎo)出函數(shù)并封裝其參數(shù)。

公共語(yǔ)言運(yùn)行庫(kù)利用平臺(tái)服務(wù)調(diào)用非托管DLL中的函數(shù)的流程圖
在托管代碼中使用平臺(tái)調(diào)用服務(wù)調(diào)用非托管DLL中封裝的函數(shù)時(shí),平臺(tái)服務(wù)將依次執(zhí)行以下操作:
1.查找包含該函數(shù)所在的DLL文件。
2.如果找到,則將該DLL文件 加載到內(nèi)存中。
3.查找函數(shù)在內(nèi)存中的地址并將其參數(shù)推到堆棧上,并封送所需的數(shù)據(jù)。
4.將控制權(quán)轉(zhuǎn)移給非托管函數(shù)。 這樣整個(gè)函數(shù)調(diào)用完成。
在VB.NET平臺(tái)調(diào)用服務(wù),申明Windows API函數(shù)主要有二種具體的實(shí)現(xiàn)方法:
1.使用DllImport特征類(lèi)來(lái)申明Windows API函數(shù)。
2.使用“Declare”語(yǔ)句來(lái)申明Windows API函數(shù)。
這二種方法雖有異曲同工之效,但在繁簡(jiǎn)上卻有很大差異,***種方法申明過(guò)程比較復(fù)雜,很容易在申明Windows API函數(shù)時(shí)出錯(cuò),所以并不提倡。而第二種方法相對(duì)簡(jiǎn)單,并且又保存了以前Visual Basic中的很多語(yǔ)法,所以在平常時(shí)大都使用這種方法來(lái)申明Windows API函數(shù)。
以上是“VB.NET平臺(tái)調(diào)用是怎么執(zhí)行操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文名稱(chēng):VB.NET平臺(tái)調(diào)用是怎么執(zhí)行操作
文章來(lái)源:http://www.chinadenli.net/article8/jdheip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站、網(wǎng)站改版、做網(wǎng)站、小程序開(kāi)發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)