goo blog サービス終了のお知らせ 

プログラミング・メモ

C言語およびC++言語がメインです。

GetLongPathName API:長いパス名の取得

2012-08-07 00:27:48 | プログラミング

短いパス名(相対パス名でも可)を長いパス名に変換する。

注意:以下の場合は失敗する(戻り値=0)。このとき、第2引数で指定したバッファは更新されない。
・第1引数で指定したパス名またはファイル名が存在しないとき

// サンプルソース(C++)
LPCTSTR pszInput = _T("D:\\Work\\LONGFI~1.TXT"); // 入力
TCHAR szLongPathName[MAX_PATH]; // ワーク
DWORD dwCount = ::GetLongPathName( pszInput, &szLongPathName[0], _countof(szLongPathName) );

// 動作確認: Windows XP Professional SP3 日本語
// テスト条件: カレントディレクトリが"D:\Work"かつ、"LONGFI~1.TXT"が存在するとき

Input  : 'D:\Work\LONGFI~1.TXT'
Output : 'D:\Work\LongFileName.txt'
戻り値 = 24

Input  : 'LONGFI~1.TXT'
Output : 'LongFileName.txt'
戻り値 = 16