欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

vb.net接口開發(fā),vbnet api

高分求助,VB.NET 支付寶開發(fā)接口

Case 4 '支付寶支付

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比江城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式江城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋江城地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

Dim cmd, subject, body, order_no, prices, rurl, types, number, transport, ordinary_fee, express_fee, readonlytrue, buyer_msg, buyer, buyer_name, buyer_address, buyer_zipcode, buyer_tel, buyer_mobile, partner As String

Dim t1, t2, t3, t4, t5 As String

Dim AlipayObj, itemUrl As String

t1 = ":" '支付接口

t2 = ConfigurationSettings.AppSettings("adminaliPay") '商戶支付寶賬戶(改成你自己的)

t3 = "m7yeav29bcdz14szvi2rbfcixywob59y" '安全校驗(yàn)碼

cmd = "0001" '命令碼

subject = "訂單號:" NoID '商品名稱

body = Convert.ToString(ViewState("CourseName")) '商品描述

order_no = NoID '商戶訂單號

prices = Convert.ToString(ViewState("NowPrice")) '商品單價(jià)

rurl = Request.Url.ToString() '商品展示網(wǎng)址

types = "1" '支付類型 1:商品購買,2:服務(wù)購買,3:網(wǎng)絡(luò)拍賣,4:捐贈(zèng)

number = "1" '購買數(shù)量

transport = "3" '發(fā)貨方式 1:平郵,2:快遞,3:虛擬物品

ordinary_fee = "0" '平郵運(yùn)費(fèi)

express_fee = "0" '快遞運(yùn)費(fèi)

readonlytrue = "true" '交易信息是否只讀,true或false,默認(rèn)值為false

buyer_msg = "" '買家給賣家的留言:string(200)

'buyer = Convert.ToString(ViewState("txtIDEmail")) '買家Email

buyer_name = Convert.ToString(ViewState("txtIDName")) ",Email:" Convert.ToString(ViewState("txtIDEmail")) '買家姓名,買家Email

buyer_address = Convert.ToString(ViewState("txtIDaddress")) '買家地址

buyer_zipcode = Convert.ToString(ViewState("txtIDPost")) '買家郵編

buyer_tel = Convert.ToString(ViewState("txtIDtelephone")) '買家電話號碼

buyer_mobile = Convert.ToString(ViewState("txtIDTel")) '買家手機(jī)號碼

partner = "" '合作伙伴ID(保留字段)

itemUrl = creatAlipayItemURL(t1, t2, t3, t4, t5, cmd, subject, body, order_no, prices, rurl, types, number, transport, ordinary_fee, express_fee, readonlytrue, buyer_msg, buyer, buyer_name, buyer_address, buyer_zipcode, buyer_tel, buyer_mobile, partner)

itemUrl = "script language=javascript" vbCrLf "!--" vbCrLf "document.forms[0].submit();" vbCrLf "http://--" vbCrLf "/script"

Response.Write(itemUrl)

End Select

VB.Net 前后端分離怎么實(shí)現(xiàn)的

1.一般來說,要實(shí)現(xiàn)前后端分離,前端就需要開啟一個(gè)本地的服務(wù)器來運(yùn)行自己的前端代碼,以此來模擬真實(shí)的線上環(huán)境,并且,也是為了更好的開發(fā)。因?yàn)槟阍趯?shí)際開發(fā)中,你不可能要求每一個(gè)前端都去搭建一個(gè)java(php)環(huán)境,并且在java環(huán)境下開發(fā),這對于前端來說,學(xué)習(xí)成本太高了。

?2.但如果本地沒有開啟服務(wù)器的話,不僅無法模擬線上的環(huán)境,而且還面臨到了跨域的問題,因?yàn)槟闳绻麑戩o態(tài)的html頁面,直接在文件目錄下打開的話,你是無法發(fā)出ajax請求的(瀏覽器跨域的限制),因此,你需要在本地運(yùn)行一個(gè)服務(wù)器,可是又不想搭建陌生而龐大的java環(huán)境,怎么辦法呢?nodejs正好解決了這個(gè)問題。在我們項(xiàng)目中,我們利用nodejs的express框架來開啟一個(gè)本地的服務(wù)器,然后利用nodejs的一個(gè)http-proxy-middleware插件將客戶端發(fā)往nodejs的請求轉(zhuǎn)發(fā)給真正的服務(wù)器,讓nodejs作為一個(gè)中間層。這樣,前端就可以無憂無慮的開發(fā)了

?3.由于前后端分離后,前端和后臺同時(shí)開發(fā)時(shí),就可能遇到前端已經(jīng)開發(fā)好一個(gè)頁面了,可是卻等待后臺API接口的情況。比如說A是負(fù)責(zé)前端,B是負(fù)責(zé)后臺,A可能用了一周做好了基本的結(jié)構(gòu),并且需要API接口聯(lián)調(diào)后,才能繼續(xù)開發(fā),

?4.而此時(shí)B卻還沒有實(shí)現(xiàn)好所需要的接口,這種情況,怎么辦呢?在我們這個(gè)項(xiàng)目里,我們是通過了mock來提供一些假數(shù)據(jù),我們先規(guī)定好了API接口,設(shè)計(jì)出了一套API文檔,然后我們就可以通過API文檔,利用mock來返回一些假數(shù)據(jù),這樣就可以模擬發(fā)送API到接受響應(yīng)的整一個(gè)過程,

?5.因此前端也不需要依賴于后端開發(fā)了,可以獨(dú)立開發(fā),等到后臺的API全部設(shè)計(jì)完之后,就可以比較快速的聯(lián)調(diào)。

接口的VB.NET( 一款行業(yè)軟件)接口

在VB.NET的類里,實(shí)現(xiàn)一個(gè)接口的語句是:

implements接口名稱

例如,下面定義一個(gè)車(總稱)的接口,這里的車是各種車的總稱:

Public Interface ICar

Property color() As String

Property speed() As Long

Sub PrintInfo()

End Interface

然后在不同類型的“車”類里實(shí)現(xiàn)它:

Public Class A_Car

Implements ICar

Dim m_color As String, m_speed As Long

Public Property color() As String Implements ICar.color

Get

Return m_color

End Get

Set(ByVal Value As String)

m_color = Value

End Set

End Property

Protected Overrides Sub Finalize()

MsgBox(I was deconstructed!)

End Sub

Public Sub New()

m_color = Red

m_speed = 210

MsgBox(I was constructed!)

End Sub

Public Property speed() As Long Implements ICar.speed

Get

Return m_speed

End Get

Set(ByVal Value As Long)

m_speed = speed

End Set

End Property

Public Sub PrintInfo() Implements ICar.PrintInfo

MsgBox(Color: m_color vbNewLine Speed: m_speed, MsgBoxStyle.Information)

End Sub

End Class

在 Form 的 Load 事件中編寫:

Dim myCar As New A_Car

myCar.PrintInfo()

運(yùn)行之后就創(chuàng)建了一個(gè) A_Car 類的實(shí)例 myCar,然后出現(xiàn)兩個(gè)對話框,分別說明實(shí)例已經(jīng)創(chuàng)建和汽車的信息。當(dāng)窗體卸載時(shí),這個(gè)類的實(shí)例 myCar 將自動(dòng)銷毀,這時(shí)將出現(xiàn)一個(gè)“I was deconstructed!”的對話框。

聲明一個(gè)接口時(shí),需要考慮以下幾點(diǎn):

1.接口主體只限于對方法,索引器以及屬性的聲明;

2.接口成員是隱式公開的,如果對其顯式指定訪問級別,就會(huì)出現(xiàn)編譯器錯(cuò)誤;

3.接口中不能包含字段,構(gòu)造函數(shù)和常量等;

4.在接口中不能實(shí)現(xiàn)任何方法,屬性或者索引器;

5.在指定方法時(shí),只需要給出返回類型,名稱和參數(shù)列表,然后分號結(jié)束。

面向?qū)ο蟮慕涌?/p>

在C++中,一個(gè)類被允許繼承多個(gè)類。但是在Java以后的語言不被允許。

這樣,如果想繼承多個(gè)類時(shí)便非常困難。所以開發(fā)方想出了新辦法:接口。

一個(gè)接口內(nèi),允許包含變量、常量等一個(gè)類所包含的基本內(nèi)容。但是,接口中的函數(shù)不允許設(shè)定代碼,也就意味著不能把程序入口放到接口里。由上可以理解到,接口是專門被繼承的。接口存在的意義也是被繼承。和C++里的抽象類里的純虛函數(shù)是相同的。不能被實(shí)例化。

定義接口的關(guān)鍵字是interface,例如:

publicinterfaceMyInterface{

public void add(int x,int y);

public void volume(int x,int y,int z);

}

繼承接口的關(guān)鍵字是implements,相當(dāng)于繼承類的extends。

需要注意的是,當(dāng)繼承一個(gè)接口時(shí),接口里的所有函數(shù)必須全部被覆蓋。例如:

class Demo implements MyInterface{

public void add(int x,int y){

System.out.println( +(x+y));

}

public void volume(int x,int y,int z){

System.out.println( +(x*y*z));

}

public static void main(String args[]){

Demo d=new Demo();

d.add(10,20);

d.volume(10,10,10);

}

}

輸出結(jié)果:

30

1000

當(dāng)想繼承多個(gè)類時(shí),開發(fā)程序不允許,報(bào)錯(cuò)。這樣就要用到接口。因?yàn)榻涌谠试S多重繼承(,),而類不允許。所以就要用到接口。

vb.net如何動(dòng)態(tài)調(diào)用WebService接口啊

調(diào)用webservice接口

一般分為靜態(tài)調(diào)用和動(dòng)態(tài)調(diào)用

靜態(tài)調(diào)用就是在項(xiàng)目中直接添加服務(wù)引用或者web服務(wù)引用;

動(dòng)態(tài)調(diào)用就是通過模擬http協(xié)議調(diào)用,這種網(wǎng)上很多提供動(dòng)態(tài)調(diào)用服務(wù)的處理類,找找直接用就可以了;

靜態(tài)調(diào)用特點(diǎn):服務(wù)參數(shù)包含復(fù)雜類型(比如自定義的一些實(shí)體類)用它比較方便,但是服務(wù)如果改變(服務(wù)地址更新,服務(wù)內(nèi)容更新)就需要在項(xiàng)目中更新服務(wù)引用,重新編譯程序;

動(dòng)態(tài)調(diào)用特點(diǎn):對于服務(wù)參數(shù)包含復(fù)雜類型的處理不是很好,如果服務(wù)內(nèi)容改變不需要重新編譯程序;

大致想到就這樣,詳細(xì)的可以在網(wǎng)上找找相關(guān)的網(wǎng)文,很多資料可以參考的

如何用vb.net進(jìn)行網(wǎng)站開發(fā)

打開VS?,?選擇VisualBasic?--?Web?--?ASP.NET?Web?應(yīng)用程序

如下圖:

VB.NET的API調(diào)用

現(xiàn)在我用我所知道的為樓主介紹VB.NET的API調(diào)用,請樓主瀏覽一下,看看行不行。

Windows API就是Windows系統(tǒng)的API函數(shù)簡稱(Application Program Interface,即:應(yīng)用程序接口函數(shù)),它是Windows操作系統(tǒng)提供給各種開發(fā)基于Windows平臺應(yīng)用軟件的開發(fā)語言的一些公用的函數(shù),這些函數(shù)一般都比較底層,所以當(dāng)各種開發(fā)語言使用自帶的函數(shù)或類庫已無法解決問題時(shí),調(diào)用Windows API函數(shù)往往是一種非常直接、有效的解決方法。但由于在程序中調(diào)用Windows API函數(shù)一般都很復(fù)雜,所以對于程序員來說,是否能夠靈活的使用Windows API函數(shù),往往也是其水平高低的一個(gè)重要標(biāo)志。但自從微軟推出.Net框架以后,各種開發(fā)基于.Net平臺下的程序語言,如Visual Basic .Net、Visual C#等卻很少使用Windows API函數(shù),并且微軟公司也不像以前那樣,提倡在這些.Net開發(fā)語言中使用Windows API函數(shù),其主要的原因如下:

1. .Net框架所附帶的類庫.Net FrameWork SDK是一個(gè)內(nèi)容豐富、功能強(qiáng)大的軟件開發(fā)包,各種Windows API函數(shù)所實(shí)現(xiàn)的各種功能幾乎都可以在這個(gè)軟件開發(fā)包中找到與之對應(yīng)的部分。

2. 微軟Visual Basic .Net、Visual C#等目的是編寫跨平臺的應(yīng)用程序,如果在Visual Basic .Net、Visual C#等中使用Windows API函數(shù),這也就注定了編寫出的程序只能運(yùn)行于Windows平臺之下,而弱化了.NET的跨平臺能力。這也就是為什么微軟不提倡在.Net平臺調(diào)用Windows API函數(shù)的原因。

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

一.平臺調(diào)用、托管DLL、非托管DLL簡介:

托管DLL就是能夠在公共語言運(yùn)行庫(Common Language Runtime,簡稱CLR)中能夠直接引用的,并且擴(kuò)展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll等。非托管DLL就是平常所的動(dòng)態(tài)鏈接庫等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語言運(yùn)行庫中不能直接被調(diào)用,而需要經(jīng)過.Net框架提供的“平臺調(diào)用”服務(wù)后才可以。

“平臺調(diào)用”是.Net框架為Visual Basic .Net、Visual C#等.Net開發(fā)語言提供的一種服務(wù),用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)(其中包括Windows API函數(shù))。“平臺調(diào)用”依賴于元數(shù)據(jù)在運(yùn)行時(shí)查找導(dǎo)出函數(shù)并封裝其參數(shù)。圖01公共語言運(yùn)行庫利用“平臺服務(wù)”調(diào)用非托管DLL中的函數(shù)的流程圖:

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

在托管代碼中使用“平臺調(diào)用”服務(wù)調(diào)用非托管DLL中封裝的函數(shù)時(shí),“平臺服務(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)用完成。

在Visual Basic .Net中使用“平臺調(diào)用”服務(wù),申明Windows API函數(shù)主要有二種具體的實(shí)現(xiàn)方法:

1. 使用DllImport特征類來申明Windows API函數(shù)。

2. 使用“Declare”語句來申明Windows API函數(shù)。

這二種方法雖有異曲同工之效,但在繁簡上卻有很大差異,第一種方法申明過程比較復(fù)雜,很容易在申明Windows API函數(shù)時(shí)出錯(cuò),所以并不提倡。而第二種方法相對簡單,并且又保存了以前Visual Basic中的很多語法,所以在平常時(shí)大都使用這種方法來申明Windows API函數(shù)。

二.VB.Net查看文件中圖標(biāo)的函數(shù)及申明Windows API的方法:

Visual Basic .Net要實(shí)現(xiàn)查看文件中的圖標(biāo),目前只使用.Net FrameWork SDK是無法實(shí)現(xiàn)這種功能的,正如前面所說,主要是由于.Net FrameWork SDK推出的時(shí)間較短,其功能還不可能面面俱到。解決問題的關(guān)鍵是正確使用Windows API函數(shù),其中所涉及到的Windows API函數(shù)主要有二個(gè):其一是獲得指定文件中的圖標(biāo)數(shù)目;其二是從指定文件的指定位置導(dǎo)出圖標(biāo)的Windows句柄。這二個(gè)函數(shù)都位于“Shell32.dll”文件中,并且函數(shù)的入口點(diǎn)都為“ExtractIcon”。下面是在Visual Basic .Net中分別使用DllImport特征類和“Declare”語句申明這二個(gè)Windows API函數(shù)的具體方法。

(1).使用DllImport特征類來申明Windows API函數(shù):

下面是在Visual Basic .Net中使用DllImport特征類申明二個(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特征類申明Windows API函數(shù)時(shí),如果申明的函數(shù)名稱和函數(shù)的入口點(diǎn)相同,則可以在申明Windows API函數(shù)時(shí),省略定義函數(shù)入口點(diǎn)對應(yīng)的代碼,即EntryPoint對象字段對應(yīng)的代碼,這樣聲明ExtractIcon函數(shù)的代碼也可以簡化為如下所示:

< 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”語句來申明Windows API函數(shù):

使用“Declare”語句的確比使用DllImport特征類要簡單了許多,下面是在Visual Basic .Net中使用“Declare”語句來聲明上述二個(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”語句中Alias關(guān)鍵字的作用相當(dāng)于使用DllImport特征類中的EntryPoint對象字段。同樣在使用“Declare”語句聲明Windows API函數(shù)時(shí),如果聲明的函數(shù)和函數(shù)的入口點(diǎn)相同,也可以省略Alias關(guān)鍵字對應(yīng)的代碼,所以ExtractIcon函數(shù)也可以簡化為如下:

Declare Auto Function ExtractIcon Lib "Shell32.dll" ( ByVal src As System.IntPtr , ByVal strFileName As string , ByVal uiIconIndex As UInt32 ) As System.IntPtr

下面就結(jié)合一個(gè)示例的編寫過程來掌握的這二個(gè)Windows API函數(shù)的具體使用方法,這個(gè)示例的作用就是讀取指定文件中的圖標(biāo)數(shù)目,并顯示文件中的圖標(biāo)。

三.本文中程序的編寫、調(diào)試和運(yùn)行環(huán)境:

(1).視窗2000高級服務(wù)器版。

(2).Visual Studio .Net 2003企業(yè)結(jié)構(gòu)設(shè)計(jì)版,.Net FrameWork SDK版本號4322。

四.Visual Basic .Net讀取文件中的圖標(biāo)的實(shí)現(xiàn)步驟:

下面介紹的示例,其功能讀取指定文件中包含的圖標(biāo)數(shù)目,并把這些圖標(biāo)全部顯示出來。下面是這個(gè)示例的實(shí)現(xiàn)步驟:

1. 啟動(dòng)Visual Studio .Net。

2. 選擇菜單【文件】|【新建】|【項(xiàng)目】后,彈出【新建項(xiàng)目】對話框。

3. 將【項(xiàng)目類型】設(shè)置為【Visual Basic項(xiàng)目】。

4. 將【模板】設(shè)置為【W(wǎng)indows應(yīng)用程序】。

5. 在【名稱】文本框中輸入【Visual Basic .Net查看文件中的圖標(biāo)】。

6. 在【位置】的文本框中輸入【E:\VS.NET項(xiàng)目】,然后單擊【確定】按鈕,這樣在【E:\VS.NET項(xiàng)目】目錄中就產(chǎn)生了名稱為【Visual Basic .Net查看文件中的圖標(biāo)】文件夾,里面存放著【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的所有文件。具體如圖02所示:

圖02:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的【新建項(xiàng)目】對話框

7. 選擇菜單【項(xiàng)目】|【添加新項(xiàng)】,在彈出的對話框中的【模板】設(shè)置為【模塊】,【名稱】文本框設(shè)置為【Module1.vb】后。單擊【打開】按鈕,則在項(xiàng)目中增加了一個(gè)模板文件,名稱為【Module1.vb】。

8. 把Visual Stuido .Net的當(dāng)前窗口切換到Module1.vb的代碼編輯窗口,并在其Module1的代碼區(qū)中添加下列代碼,下列代碼是用二種方式聲明二個(gè)Windows API函數(shù):

< 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

'聲明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

9. 把Visual Studio .Net的當(dāng)前窗口切換到Form1窗體的設(shè)計(jì)查看,并從【工具箱】中的【W(wǎng)indows窗體】選項(xiàng)卡中拖入下列組件到Form1窗體:

四個(gè)Label組件,其中二個(gè)用以顯示提示信息,另外二個(gè)分別用以顯示選擇的文件名稱和這個(gè)文件中包含的圖標(biāo)數(shù)目。

一個(gè)ListView組件,利用其顯示大圖標(biāo)的屬性用以顯示選定文件中的圖標(biāo)。

一個(gè)OpenFileDialog組件,用以選擇要查看圖標(biāo)的文件名稱。

一個(gè)ImageList組件,它起的是橋梁的作用,首先把從文件中導(dǎo)出的圖標(biāo)存放到這里,然后再提供ListView組件顯示出來。

一個(gè)Button組件。

10. 按照表01中數(shù)值來設(shè)定設(shè)定組件的主要屬性:

組件類型 組件名稱 屬性 設(shè)置結(jié)果

Form Form1 Text VB.NET查看文件中的圖標(biāo)

Form1 MaximizeBox False

Form1 MinimizeBox False

Form1 FormBorderStyle FixedSingle

ListView ListView1 ImageList1 LargeImageList

ListView1 MultiSelect False

ListView1 Size Size ( 380 , 208 )

Button Button1 Text 選擇文件

Button1 FlatStyle Flat

ImageList ImageList1 Size Size ( 32 , 32 )

ImageList1 TransparentColor Color.Transparent

Label Label1 Text 文件名稱:

Label2 Text 圖標(biāo)數(shù)目:

Label3 Text ""

Label4 Text "0"

表01:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目窗體中各組件的主要屬性設(shè)定數(shù)值表

并按照圖02中各組件的位置、大小和排列方式來調(diào)整窗體中各個(gè)組件:

圖02:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的設(shè)計(jì)界面

11. 把Visual Studio .Net當(dāng)前窗口切換到Form.vb的代碼編輯窗口,并用下列代碼替換Form1.vb中的Button1組件的Click事件的處理代碼,下列代碼是在Button1組件的Click事件中處理查看文件中圖標(biāo)的功能,具體如下:

Private Sub Button1_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button1.Click

If OpenFileDialog1.ShowDialog ( ) = DialogResult.OK Then

'清除組件中的所有項(xiàng)目

ListView1.Items.Clear ( )

ImageList1.Images.Clear ( )

Dim sfName As String = OpenFileDialog1.FileName

Label3.Text = sfName

Dim iIcon_Num As Integer = Icon_Num ( IntPtr.Zero , sfName , -1 )

'顯示文件中的圖標(biāo)數(shù)目

Label4.Text = iIcon_Num.ToString ( )

Dim i As Integer

For i = 0 To iIcon_Num - 1 Step 1

'強(qiáng)制實(shí)現(xiàn)int到uint類型轉(zhuǎn)換

Dim j As UInt32

j = System.Convert.ToUInt32 ( i )

Dim hIcon As System.IntPtr = ExtractIcon ( IntPtr.Zero , sfName , j )

'在imageList1組件中加入當(dāng)然提取的圖標(biāo)

ImageList1.Images.Add ( Icon.FromHandle ( hIcon ).ToBitmap ( ) )

'在ListView組件中加入一個(gè)項(xiàng)目

ListView1.Items.Add ( "第" + ( i + 1 ).ToString ( ) + "個(gè)圖標(biāo)" )

'把加入項(xiàng)目的圖象索引指向剛才加入圖標(biāo)在imagList1組件中的索引,從而顯示圖標(biāo)

ListView1.Items ( i ).ImageIndex = i

Next i

End If

End Sub

12. 至此,在上述步驟都正確執(zhí)行后,【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的全部工作就完成了。單擊快捷鍵F5就可以運(yùn)行程序,此時(shí)單擊【選擇文件】按鈕選擇文件后,程序就能夠讀取這個(gè)文件中的圖標(biāo)及其數(shù)目,并顯示出來了。具體如圖03所示:

圖03:【Visual Basic .Net查看文件中的圖標(biāo)】項(xiàng)目的運(yùn)行界面

五.總結(jié):

解決Visual Basic .Net查看文件中的圖標(biāo)的關(guān)鍵并非是使用.Net框架中提供的類庫,而是使用Windows的API函數(shù)。雖然這與利用Visual Basic .Net開發(fā)跨平臺程序的初衷相違背,但的確不失為一種解決問題的方法。有些時(shí)候通過Windows API函數(shù)能夠快捷、方便的解決實(shí)際問題,而這往往是只使用.Net FrameWork SDK所望塵莫及的,但隨著.Net FrameWork SDK內(nèi)容的不斷豐富,各種新的組成部分和新的功能不斷加入,可以預(yù)見的是,在未來的.Net FrameWork SDK中必將擁有可以替換本文中介紹的二個(gè)Windows API函數(shù)的組成部分。

新聞名稱:vb.net接口開發(fā),vbnet api
瀏覽路徑:http://www.chinadenli.net/article2/dssoiic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管云服務(wù)器建站公司軟件開發(fā)手機(jī)網(wǎng)站建設(shè)做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)