不會(huì)這個(gè)API,不過(guò)提醒下,.net的API聲明類(lèi)型都為Integer,不是Long

成都創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶(hù)提供定制化的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、資陽(yáng)主機(jī)托管解決方案。為客戶(hù)網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站開(kāi)發(fā)、政府網(wǎng)站等各類(lèi)型客戶(hù)群體,為全球數(shù)千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
API(Advanced Programmers Interface,高級(jí)程序員接口)(注:API實(shí)際是指Application Programming Interface,應(yīng)用程序編程接口;此處疑為原文錯(cuò)誤,不過(guò)在VB中也可以這么說(shuō)吧!)是一套用來(lái)控制Windows的各個(gè)部件(從桌面的外觀(guān)到位一個(gè)新進(jìn)程分配的內(nèi)存)的外觀(guān)和行為的一套預(yù)先定義的Windows函數(shù).用戶(hù)的每個(gè)動(dòng)作都會(huì)引發(fā)一個(gè)或幾個(gè)函數(shù)的運(yùn)行以Windows告訴發(fā)生了什么.
這在某種程度上很象Windows的天然代碼.其他的語(yǔ)言只是提供一種能自動(dòng)而且更容易的訪(fǎng)問(wèn)API的方法.VB在這方面作了很多工作.它完全隱藏了API并且提供了在Windows環(huán)境下編程的一種完全不同的方法.
這也就是說(shuō),你用VB寫(xiě)出的每行代碼都會(huì)被VB轉(zhuǎn)換為API函數(shù)傳遞給Windows.例如,Form1.Print...VB 將會(huì)以一定的參數(shù)(你的代碼中提供的,或是默認(rèn)參數(shù))調(diào)用TextOut 這個(gè)API函數(shù).
同樣,當(dāng)你點(diǎn)擊窗體上的一個(gè)按鈕時(shí),Windows會(huì)發(fā)送一個(gè)消息給窗體(這對(duì)于你來(lái)說(shuō)是隱藏的),VB獲取這個(gè)調(diào)用并經(jīng)過(guò)分析后生成一個(gè)特定事件(Button_Click).
API函數(shù)包含在Windows系統(tǒng)目錄下的動(dòng)態(tài)連接庫(kù)文件中(如User32.dll,GDI32.dll,Shell32.dll...).
API 聲明
正如在"什么是API"中所說(shuō),API函數(shù)包含在位于系統(tǒng)目錄下的DLL文件中.你可以自己輸入API函數(shù)的聲明,但VB提供了一種更簡(jiǎn)單的方法,即使用API Text Viewer.
要想在你的工程中聲明API函數(shù),只需運(yùn)行API Text Viewer,打開(kāi)Win32api.txt(或.MDB如果你已經(jīng)把它轉(zhuǎn)換成了數(shù)據(jù)庫(kù)的話(huà),這樣可以加快速度.注:微軟的這個(gè)文件有很多的不足,你可以試一下本站提供下載的api32.txt),選擇"聲明",找到所需函數(shù),點(diǎn)擊"添加(Add)"并"復(fù)制(Copy)",然后粘貼(Paste)到你的工程里.使用預(yù)定義的常量和類(lèi)型也是同樣的方法.
你將會(huì)遇到一些問(wèn)題:
假設(shè)你想在你的窗體模塊中聲明一個(gè)函數(shù).粘貼然后運(yùn)行,VB會(huì)告訴你:編譯錯(cuò)誤...Declare 語(yǔ)句不允許作為類(lèi)或?qū)ο竽K中的 Public 成員...看起來(lái)很糟糕,其實(shí)你需要做的只是在聲明前面添加一個(gè)Private(如 Private Declare Function...).--不要忘了,可是這將使該函數(shù)只在該窗體模塊可用.
在有些情況下,你會(huì)得到"不明確的名稱(chēng)"這樣的提示,這是因?yàn)楹瘮?shù).常量或其他的什么東西共用了一個(gè)名稱(chēng).由于絕大多數(shù)的函數(shù)(也可能是全部,我沒(méi)有驗(yàn)證過(guò))都進(jìn)行了別名化,亦即意味著你可以通過(guò)Alias子句使用其它的而不是他們?cè)械拿Q(chēng),你只需簡(jiǎn)單地改變一下函數(shù)名稱(chēng)而它仍然可以正常運(yùn)行.
你可以通過(guò)查看VB的Declare語(yǔ)句幫助主題來(lái)獲取有關(guān)Alias的詳細(xì)說(shuō)明.
H 是16進(jìn)制數(shù)的前導(dǎo)符,表示這是一個(gè)16進(jìn)制數(shù)
此外 O 是8進(jìn)制數(shù)的前導(dǎo)符,表示這是個(gè)8進(jìn)制數(shù) (注意是字母O哦,不是數(shù)字0)
(1).使用DllImport特征類(lèi)來(lái)申明Windows API函數(shù):
下面是在Visual Basic .Net中使用DllImport特征類(lèi)申明二個(gè)Windows API函數(shù)的具體示例:
'函數(shù)ExtractIcon,其功能是是從指定文件的指定位置導(dǎo)出圖標(biāo)的Windows句柄。
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
'函數(shù)Icon_Num,其功能是獲得指定文件中的圖標(biāo)數(shù)目
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" , EntryPoint := "ExtractIcon" ) > _
Public Function _
Icon_Num ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer
End Function
在使用DllImport特征類(lèi)申明Windows API函數(shù)時(shí),如果申明的函數(shù)名稱(chēng)和函數(shù)的入口點(diǎn)相同,則可以在申明Windows API函數(shù)時(shí),省略定義函數(shù)入口點(diǎn)對(duì)應(yīng)的代碼,即EntryPoint對(duì)象字段對(duì)應(yīng)的代碼,這樣聲明ExtractIcon函數(shù)的代碼也可以簡(jiǎn)化為如下所示:
< System.Runtime.InteropServices.DllImport ( "Shell32.dll" ) > _
Public Function _
ExtractIcon ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
End Function
(2).使用“Declare”語(yǔ)句來(lái)申明Windows API函數(shù):
使用“Declare”語(yǔ)句的確比使用DllImport特征類(lèi)要簡(jiǎn)單了許多,下面是在Visual Basic .Net中使用“Declare”語(yǔ)句來(lái)聲明上述二個(gè)Windows API函數(shù)的具體方法:
Declare Auto Function ExtractIcon Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
'聲明ExtractIcon函數(shù)
Declare Auto Function Icon_Num Lib "Shell32.dll" Alias "ExtractIcon" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As Integer ) As Integer
'聲明Icon_Num函數(shù)
在Visual Basic .Net中聲明Windows API函數(shù)時(shí),“Declare”語(yǔ)句中Alias關(guān)鍵字的作用相當(dāng)于使用DllImport特征類(lèi)中的EntryPoint對(duì)象字段。同樣在使用“Declare”語(yǔ)句聲明Windows API函數(shù)時(shí),如果聲明的函數(shù)和函數(shù)的入口點(diǎn)相同,也可以省略Alias關(guān)鍵字對(duì)應(yīng)的代碼,所以ExtractIcon函數(shù)也可以簡(jiǎn)化為如下:
Declare Auto Function ExtractIcon Lib "Shell32.dll" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr
與vb6.0的語(yǔ)法一樣啊
Private Declare Function 函數(shù)名 Lib "庫(kù)名" Alias "別名" (形參1 As 類(lèi)型,形參2 As 類(lèi)型,形參3 As 類(lèi)型,形參4 As 類(lèi)型,形參5 As 類(lèi)型) As 返回值類(lèi)型
本文題目:vb.netapi的簡(jiǎn)單介紹
分享網(wǎng)址:http://chinadenli.net/article1/dsggpod.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、微信公眾號(hào)、網(wǎng)站排名、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)