GetShortPathName 短い形式のパス名を取得

Cの宣言:

DWORD GetShortPathName(LPCTSTR LongPath, LPSTR ShortPath, DWORD ShortPathSize);

VBの宣言:

Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" ( _
	ByVal LongPath As String, _
	ByVal ShortPath As String, _
	ByVal ShortPathSize As Long) As Long

説明:

LongPathで与えられたパス名を短い形式のパス名に変換する。LongPathに含まれるすべてのディレクトリ名も短い形式に変換される。

LongPathで与えるパスは、長い形式のパス名でなくても良い。パス名中の短い形式のディレクトリ名やファイル名の部分は、そのままShortPathに出力される。

与えるパス名は、実際にディスク上に存在していなければならない。

引数の意味は、以下の通り。
LongPath (IN) 変換元のパス名
ShortPath (OUT) 短い形式に変換されたパス名を保存するバッファ。
ShortPathSize (IN) バッファのサイズ

戻り値は、出力されたパス名の文字数である。バッファが小さすぎた場合、必要なサイズが返される。関数の実行に失敗した場合、0が返される。

Cのサンプル:

void DispShortPathName()
{
	DWORD d;
	char buf[1000];

	d = GetShortPathName(
		"d:\\aaabbbcccddd1\\0123456789.txt",
		buf,
		1000
	);

	printf("%s\n", buf);
}

VBのサンプル:

' 短い形式のファイル名表示
Private Sub DispShortPathName()
	Dim ShortName As String * 1000

	'短い形式のファイル名取得
	GetShortPathName "c:\0123456789.txt", ShortName, 1000

	'表示
	MsgBox Left(ShortName, InStr(ShortName, vbNullChar) - 1)
End Sub

(original text:1998/12/25 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。