|
短いファイル名から長いファイル名を取得する関数に、 関数 GetLongPathName() がある。 //*********************************************************
// 短いファイル名(8.3形式)から長いファイル名を取得する関数
//*********************************************************
BOOL GetLongPathName95( const char *ShortPath, char *LongPath, DWORD BufferSize )
{
WCHAR wcShortPath[MAX_PATH+1];
ULONG chEaten;
ITEMIDLIST *pidl;
IShellFolder *pshf;
IMalloc *pMalloc;
if ( NOERROR != SHGetMalloc( &pMalloc ) )
return FALSE; // 失敗
if ( NOERROR == SHGetDesktopFolder( &pshf ) )
{
MultiByteToWideChar( CP_ACP, 0, ShortPath, -1, wcShortPath, min(MAX_PATH,BufferSize) );
if ( NOERROR == pshf->ParseDisplayName( NULL, NULL, wcShortPath, &chEaten, &pidl, NULL ) )
{
if ( SHGetPathFromIDList( pidl, LongPath ) ) // パス名を pidl より取得
{
pMalloc->Free( pidl );
pshf->Release();
pMalloc->Release();
return TRUE; // 成功
}
pMalloc->Free( pidl );
}
pshf->Release();
}
pMalloc->Release();
return FALSE; // 失敗
}//GetLongPathName95
以下に、短いファイル名と取得された長いファイル名との対応例を示す。
関連
・長いファイル名から短いファイル名(8.3形式)を取得する | |||||||||