偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

VB.NET使用Alias子句簡(jiǎn)介

開(kāi)發(fā) 后端
這里介紹VB.NET使用Alias子句,如果沒(méi)有VB.NET使用Alias子句,那么在 Function(或Sub)后的函數(shù)名也是區(qū)分大小寫(xiě)的。

學(xué)習(xí)VB.NET時(shí),你可能會(huì)遇到VB.NET使用Alias子句問(wèn)題,這里將介紹VB.NET使用Alias子句問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。

Declare語(yǔ)句中的Alias子句是一個(gè)可選的部分,用戶(hù)可以通過(guò)它所標(biāo)識(shí)的別名對(duì)動(dòng)態(tài) 庫(kù)中的函數(shù)進(jìn)行引用。例如,在下面的語(yǔ)句中,聲明了一個(gè)在VB中名為MyFunction的函數(shù),而它在動(dòng)態(tài)庫(kù)Mydll.dll中最初的名字是MyFunctionX。

  1. Private Declare Function MyFunction Lib "Mydll.dll" _Alias "MyFunctionX" ( ) As Long  

需要注意的是,Alias子句中的函數(shù)名是大小寫(xiě)敏感的,也就是說(shuō),必須與函數(shù)在生成時(shí)的聲明(如在C源文件中的聲明)一致。這是因?yàn)?2位動(dòng)態(tài)庫(kù)與16位動(dòng)態(tài)庫(kù)不同,其中的函數(shù)名是區(qū)分大小寫(xiě)的。同樣道理,如果沒(méi)有VB.NET使用Alias子句,那么在 Function(或Sub)后的函數(shù)名也是區(qū)分大小寫(xiě)的。

通常在以下幾種情況時(shí)需要VB.NET使用Alias子句:

1.處理使用字符串的系統(tǒng)Windows API過(guò)程

如果調(diào)用的系統(tǒng)Windows API過(guò)程要使用字符串,那么聲明語(yǔ)句中必須增加一個(gè)Alias 子句,以指定正確的字符集。包含字符串的系統(tǒng)Windows API函數(shù)實(shí)際有兩種格式:ANSI和Unicode(關(guān)于ANSI和Unicode兩種字符集的區(qū)別將在后面詳細(xì)闡述)。因此,在Windows頭文件中,每個(gè)包含字符串的函數(shù)都同時(shí)有ANSI版本和Unicode版本。例如,下面是SetWindowText函數(shù)的兩種C語(yǔ)言描述??梢钥吹?,第一個(gè)描述將函數(shù)定義為SetWindowTextA,尾部的"A" 表明它是一個(gè)ANSI函數(shù):

  1. WINUSERAPI BOOL WINAPI SetWindowTextA(HWND hWnd, LPCSTR lpString);  

第二個(gè)描述將它定義為 SetWindowTextW, 尾部的"W" 表明它是一個(gè) Unicode 函數(shù):

  1. WINUSERAPI BOOL WINAPI SetWindowTextW(HWND hWnd, LPCWSTR lpString);  

因?yàn)閮蓚€(gè)函數(shù)實(shí)際的名稱(chēng)都不是"SetWindowText",要引用正確的函數(shù)就必 須增加一個(gè)Alias子句:

  1. Private Declare Function SetWindowText Lib "user32" _  
  2. Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal _  
  3. lpString As String) As Long 

應(yīng)當(dāng)注意,對(duì)于VB中使用的系統(tǒng)WindowsAPI函數(shù),應(yīng)該指定函數(shù)的ANSI版本,因?yàn)橹?有WindowsNT才支持Unicode版本,而Windows95不支持這個(gè)版本。僅當(dāng)應(yīng)用程序只運(yùn)行 在WindowsNT平臺(tái)上的時(shí)候才可以使用Unicode版本。

2.函數(shù)名是不標(biāo)準(zhǔn)的名稱(chēng)

有時(shí),個(gè)別的DLL過(guò)程的名稱(chēng)不是有效的標(biāo)識(shí)符。例如,它可能包含了非法的字符(如連字符),或者名稱(chēng)是VB的關(guān)鍵字(如GetObject)。在這種情況下,可以使用Alias關(guān)鍵字。例如,操作環(huán)境DLLs中的某些過(guò)程名以下劃線(xiàn)開(kāi)始。盡管在VB標(biāo)識(shí)符中允許使用標(biāo)識(shí)符,但是下劃線(xiàn)不能作為標(biāo)識(shí)符的第一個(gè)字符。為了使用這種過(guò)程,必須先聲明一個(gè)名稱(chēng)合法的過(guò)程,然后VB.NET使用Alias子句引用過(guò)程的真實(shí)名稱(chēng):

  1. Declare Function lopen Lib "kernel32" Alias "_lopen" _  
  2. (ByVal lpPathName As String, ByVal iReadWrite _  
  3. As Long) As Long 

在上例中,lopen是VB中使用的過(guò)程名稱(chēng)。而_lopen則是動(dòng)態(tài)連接庫(kù)中可以識(shí)別的名 稱(chēng)。

3.使用序號(hào)標(biāo)識(shí)DLL過(guò)程

除了使用名稱(chēng)之外,還可以使用序號(hào)來(lái)標(biāo)識(shí)DLL過(guò)程。某些動(dòng)態(tài)連接庫(kù)中不包含過(guò)程的名稱(chēng),在聲明它們包含的過(guò)程時(shí)必須使用序號(hào)。同使用名稱(chēng)標(biāo)識(shí)的DLL過(guò)程相比,如果使用序號(hào),在最終的應(yīng)用程序中消耗的內(nèi)存將比較少,而且速度會(huì)快些。但是,一個(gè)具體的API的序號(hào)在不同的操作系統(tǒng)中可能是不同的。例如GetWindowsDirectory在Win95下的序號(hào)為432,而在WindowsNT4.0下為338??偠灾?,如果希望應(yīng)用程序能夠在不同的操作系統(tǒng)下運(yùn)行,那么最好不要使用序號(hào)來(lái)標(biāo)識(shí)API過(guò)程。如果過(guò)程不屬于API,或者應(yīng)用程序使用的范圍很有限,那么使用序號(hào)還是有好處的。

要使用序號(hào)來(lái)聲明DLL過(guò)程,Alias子句中的字符串需要包含過(guò)程的序號(hào),并在序號(hào)的 前面加一個(gè)數(shù)字標(biāo)記字符(#)。例如,Windowskernel中的GetWindowsDirectory函數(shù)的序 號(hào)為432;可以用下面的語(yǔ)句來(lái)聲明該DLL過(guò)程:

  1. Declare Function GetWindowsDirectory Lib "kernel32" _  
  2. Alias "#432" (ByVal lpBuffer As String, _  
  3. ByVal nSize As Long) As Long 

在這里,可以使用任意的合法名稱(chēng)作為過(guò)程的名稱(chēng),VB將用序號(hào)在DLL中尋找過(guò)程。

為了得到要聲明的過(guò)程的序號(hào),可以使用Dumpbin.exe等實(shí)用工具(Dumpbin.exe是Microsoft VisualC++提供的一個(gè)實(shí)用工具,它的使用說(shuō)明可以參見(jiàn)VC的文檔)。利用Dumpbin,可以提取出.dll文件中的各種信息,例如DLL中的函數(shù)列表,它們的序號(hào)以及與代碼有關(guān)的其它信息。

【編輯推薦】

  1. 詳細(xì)描述VB調(diào)用動(dòng)態(tài)連接庫(kù)
  2. 敘述VB.NET創(chuàng)建控件數(shù)組
  3. 淺析VB.NET繪制GDI圖形的方法
  4. 講解VB.NET訪(fǎng)問(wèn)注冊(cè)表方法
  5. 概括VB.NET獲取網(wǎng)卡地址的步驟
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-11-02 17:54:44

VB.NET數(shù)組

2009-10-12 14:13:00

VB.NET使用局部變

2009-10-14 13:21:46

VB.NET Acco

2009-10-28 17:44:31

VB.NET語(yǔ)言

2009-10-30 15:37:23

VB.NET Sub創(chuàng)

2009-10-15 09:16:35

VB.NET重新申明數(shù)

2009-11-03 13:48:02

VB.NET枚舉

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-14 17:08:44

VB.NET使用Fil

2010-01-11 16:04:10

VB.NET使用wit

2010-01-15 16:29:47

VB.NET對(duì)象存儲(chǔ)

2009-11-03 11:27:30

VB.NET界面

2009-10-09 14:55:02

VB.NET數(shù)組

2009-10-20 10:29:30

VB.NET使用Sor

2009-11-02 13:54:27

VB.NET shel

2009-10-13 15:20:02

VB.NET使用Dra

2009-10-16 14:07:18

VB.NET使用Mon

2009-10-16 10:14:26

VB.NET使用Fil

2009-10-12 13:11:48

VB.NET使用線(xiàn)程

2010-01-18 18:20:49

VB.NET使用API
點(diǎn)贊
收藏

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