GetLongPathName

獲取指定檔案路徑的長路徑形式。該API不適合對畸形資料夾進行操作。

VB版

Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long

說明

獲取指定檔案的長路徑名

返回值

Long,裝載到lpszShortPath緩衝區的字元數量。如lpszLongPath的長度不足,不能容下檔案名稱,就返回需要的緩衝區長度

參數表

參數 類型及說明

lpszShortPath String,指定欲獲取長路徑名的那個檔案的名字。

lpszLongPath String,指定一個緩衝區,用於裝載檔案的長路徑和檔案名稱

cchBuffer Long,lpszLongPath緩衝區長度

Delphi版

Function GetLongPathName(lpszShortPath:PChar,lpszLongPath:PChar,cchBuffer:Cardinal):Cardinal

lpszShortPath 短檔案名稱,原來的字元串

lpszLongPath長檔案名稱,我們想要的結果

cchBuffer 緩衝區長度

舉個例子:

S := ParamStr(1);

GetLongPathName(PChar(S),PChar(S),Length(S));

將程式啟動時得到的S值(一個長檔案名稱),變為一個短檔案名稱,並且還是將S的值改變為該短檔案名稱。

但是,在實際使用中,字元串的最後幾位會返回一些奇怪的字元,例如 #0'EX' 等等,我用的方法是:

for I := Length(S) downto Length(S)-2 do

Runaim := #32;

#32在Delphi中為空格。具體可以參見常用字元與ASCII代碼對照表。

C++版

DWORD WINAPI GetLongPathName(

LPCTSTR lpszShortPath,//指定的要轉換的路徑

LPTSTR lpszLongPath,//接收長路徑的緩衝區

DWORD cchBuffer//緩衝區長度

);

函式說明:

將指定的路徑轉化成長路徑形式

返回值:

函式執行成功則返回lpszLongPath接收的字元串長度,不包括空字元;如果lpszLongPath長度太小,則函式返回接收長路徑需要的緩衝區長度,包括空字元,因此如果返回值大於cchBuffer,則應重新分配lpszLongPath,使其長度足夠容納長路徑;如果函式因為其他原因失敗則返回0,可以通過GetLastError()獲取錯誤信息

相關詞條

相關搜尋

熱門詞條

聯絡我們