#include <windows.h> #include <tchar.h> #include <stdio.h> #define BUFSIZE 4096 #define LONG_DIR_NAME TEXT("c:\\longdirectoryname") void _tmain(int argc, TCHAR* argv[]) { DWORD retval = 0; BOOL success; TCHAR buffer[BUFSIZE] = TEXT(""); TCHAR buf[BUFSIZE] = TEXT(""); TCHAR** lppPart = { NULL }; if (argc != 2) { _tprintf(TEXT("Usage: %s [file]\n"), argv[0]); return; } // Retrieve the full path name for a file. // The file does not need to exist. retval = GetFullPathName(argv[1], BUFSIZE, buffer, lppPart); if (retval == 0) { // Handle an error condition. printf("GetFullPathName failed (%d)\n", GetLastError()); return; } else { _tprintf(TEXT("The full path name is: %s\n"), buffer); if (lppPart != NULL && *lppPart != 0) { _tprintf(TEXT("The final component in the path name is: %s\n"), *lppPart); } } // Create a long directory name for use with the next two examples. success = CreateDirectory(LONG_DIR_NAME, NULL); if (!success) { // Handle an error condition. printf("CreateDirectory failed (%d)\n", GetLastError()); return; } // Retrieve the short path name. retval = GetShortPathName(LONG_DIR_NAME, buf, BUFSIZE); if (retval == 0) { // Handle an error condition. printf("GetShortPathName failed (%d)\n", GetLastError()); return; } else _tprintf(TEXT("The short name for %s is %s\n"), LONG_DIR_NAME, buf); // Retrieve the long path name. retval = GetLongPathName(buf, buffer, BUFSIZE); if (retval == 0) { // Handle an error condition. printf("GetLongPathName failed (%d)\n", GetLastError()); return; } else _tprintf(TEXT("The long name for %s is %s\n"), buf, buffer); // Clean up the directory. success = RemoveDirectory(LONG_DIR_NAME); if (!success) { // Handle an error condition. printf("RemoveDirectory failed (%d)\n", GetLastError()); return; } }