VB聲明 |
|
Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long) |
|
說明 |
|
獲取指定文件的完整路徑名 |
|
返回值 |
|
Long,裝載到lpBuffer中的字符數(shù)量(排除空中止字符)。如緩沖區(qū)的長(zhǎng)度不足以容下完整的路徑,則返回值就是要求的緩沖區(qū)大小。零表示失敗。會(huì)設(shè)置GetLastError |
|
參數(shù)表 |
|
參數(shù) |
類型及說明 |
lpFileName |
String,指定文件名(長(zhǎng)文件名或8.3格式的DOS文件名) |
nBufferLength |
Long,lpBuffer字串的長(zhǎng)度 |
lpBuffer |
String,指定一個(gè)預(yù)先定義好的字串,用于裝載目標(biāo)文件的驅(qū)動(dòng)器及路徑名稱。如存在長(zhǎng)文件名,那么這個(gè)參數(shù)保存的就肯定是長(zhǎng)文件名 |
lpFilePart |
Long,指定一個(gè)長(zhǎng)整數(shù)變量,用于裝載文件名起始的地方。參考注解 |
注解 |
|
lpFilePart參數(shù)在vb里很難使用。它的問題在于:盡管windows在這個(gè)Long值中裝載lpBuffer字串中的地址,用它表示路徑信息文件名部分的起始處。但非常不幸,由vb創(chuàng)建的、傳遞給api的ANSI字串緩沖區(qū)也會(huì)使用這個(gè)地址。等這個(gè)函數(shù)返回的時(shí)候,vb已將返回的(lpBuffer)字串復(fù)制回它的內(nèi)部Unicode字串緩沖區(qū),所以lpFilePart地址已沒有任何意義。因此,我們面臨兩種選擇。首先,可以簡(jiǎn)單的不使用lpFilePart信息(忽略windows裝載在參數(shù)中的值)。其次,可以將lpBuffer參數(shù)變成一個(gè)字節(jié)數(shù)組(lpFilePart As Byte——將數(shù)組的第一個(gè)元素作為參數(shù)傳遞) |
|
其他 |
|
在vb的api文本查看器中復(fù)制的聲明為:Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long |