長い形式のファイルパスを取得する

長い形式のファイルパスを取得するには、GetLongPathName関数を使います。この関数は、Windows 98以降で使用可能です。例えば、次のようにします。
//---------------------------------------------------------------------------
#include <Utilcls.h>
#include <mbstring.h>
//---------------------------------------------------------------------------
const char* FileNameWildcards = "*?";
//---------------------------------------------------------------------------
AnsiString __fastcall GetLongFilePath(AnsiString AFilePath)
{
        if(AFilePath.Length() >= MAX_PATH || _mbspbrk(AFilePath.c_str(), FileNameWildcards) != NULL) {
                return AnsiString();
        }
        const DWORD bufferSize = MAX_PATH;
        TAPtr<TCHAR> buffer = new TCHAR[bufferSize];
        const DWORD stringLength = GetLongPathName(AFilePath.c_str(), buffer, bufferSize);
        if(stringLength == 0 || stringLength > bufferSize) {
                return AnsiString();
        }
        return AnsiString(buffer, stringLength);
}
//---------------------------------------------------------------------------
最終更新: 2008-07-05

戻る