成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析調(diào)用VB.NET Windows API函數(shù)

開(kāi)發(fā) 后端
調(diào)用VB.NET Windows API函數(shù)往往是一種非常直接、有效的解決方法,文章就這點(diǎn)和大家深入細(xì)致的分析,希望對(duì)家有幫助。

VB.NET還是比較常用的,于是我研究了一下VB.NET Windows API ,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。Windows API就是Windows系統(tǒng)的API函數(shù)簡(jiǎn)稱(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ù)或類庫(kù)已無(wú)法解決問(wèn)題時(shí),調(diào)用VB.NET 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ǔ)言中使用

#T#VB.NET Windows API函數(shù),其主要的原因如下:
1. Net框架所附帶的類庫(kù).Net FrameWork 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)能力。這也就是為什么微軟不提倡在.Net平臺(tái)調(diào)用 Windows API函數(shù)的原因。

雖然微軟并不提倡在VB.NET、Visual C#中調(diào)用Windows API函數(shù),但由于目前.Net 框架推出時(shí)間較短,.Net FrameWork SDK中提供的類庫(kù)還并不足以完全替換Windows API函數(shù)的所有功能,所以在某些時(shí)候,.Net開(kāi)發(fā)語(yǔ)言還是必須要調(diào)用Windows API函數(shù)。

平臺(tái)調(diào)用、托管DLL、非托管DLL簡(jiǎn)介

托管DLL就是能夠在公共語(yǔ)言運(yùn)行庫(kù)(Common Language Runtime,簡(jiǎn)稱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)用”依賴于元數(shù)據(jù)在運(yùn)行時(shí)查找導(dǎo)出函數(shù)并封裝其參數(shù)。圖01公共語(yǔ)言運(yùn)行庫(kù)利用“平臺(tái)服務(wù)”調(diào)用非托管DLL中的函數(shù)的流程圖:

 “平臺(tái)服務(wù)”的調(diào)用非托管函數(shù)的流程圖


圖01:“平臺(tái)服務(wù)”的調(diào)用非托管函數(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)申明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ù)。

責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-10-15 17:50:48

VB.NET調(diào)用API

2009-10-23 10:01:28

VB.NET申明Win

2009-10-26 10:44:27

VB.NET API函

2009-11-03 13:02:28

VB.NET Wind

2009-11-03 13:48:02

VB.NET枚舉

2009-11-03 09:26:13

VB.NET方法

2009-10-15 17:41:14

VB.NET Impo

2009-11-10 16:55:05

VB.NET調(diào)用API

2010-01-18 17:29:35

VB.NET函數(shù)調(diào)用

2009-10-10 15:43:51

2009-10-13 15:20:02

VB.NET使用Dra

2009-11-03 10:00:20

VB.NET New方

2009-10-12 14:32:40

VB.NET實(shí)現(xiàn)定時(shí)關(guān)

2009-10-16 14:07:18

VB.NET使用Mon

2009-10-16 18:01:06

VB.NET調(diào)用Win

2009-10-19 17:42:31

VB.NET API函

2009-10-23 12:53:25

VB.NET語(yǔ)言

2009-10-13 16:05:07

VB.NET字符數(shù)據(jù)類

2009-10-16 15:06:13

VB.NET組合時(shí)間值

2009-10-16 09:21:49

VB.NET開(kāi)發(fā)自動(dòng)分
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩国产在线 | 性在线| 久久久久中文字幕 | 91亚洲欧美 | 精品国产精品一区二区夜夜嗨 | 国产自产c区 | 日本在线免费视频 | 亚洲人在线播放 | 亚洲精品一区二区三区在线 | 操射视频| 久在线观看 | 精品久久一区二区三区 | 在线看无码的免费网站 | 亚洲超碰在线观看 | 国产亚洲精品精品国产亚洲综合 | 日韩高清一区 | 91视频在线看 | 性一交一乱一透一a级 | 久久一区二区免费视频 | 91玖玖 | 亚洲综合大片69999 | h视频在线观看免费 | 国产成人综合一区二区三区 | 天堂av影院 | 久久久久国产一区二区三区四区 | 亚洲欧洲日本国产 | 玖玖视频免费 | 久久99国产精品 | 欧美日韩一区二区三区四区 | 国产亚洲精品久久19p | 亚洲国产精品福利 | 中文字幕国产精品视频 | 久久久久久女 | 日本三级日产三级国产三级 | 国产特一级黄色片 | 伊人网在线综合 | 黄色av观看| 自拍偷拍视频网 | 国产日韩欧美一区二区 | 亚洲啪啪| 天天操操 |