GetShortPathName() - displaying the path
Compiler: Visual C++ Express Edition 2005
Compiled on Platform: Windows XP Pro SP2
Header file: Standard and Windows
Additional library: Windows Platform SDK
Additional project setting: Set project to be compiled as C
Project -> your_project_name Properties -> Configuration Properties -> C/C++ -> Advanced -> Compiled As: Compiled as C Code (/TC)
Other info: non-CLR or unmanaged
To do: Displaying the short and long path name
To show: Using GetShortPathName()
// The GetShortPathName() example
#include <stdlib.h> // for MAX_PATH
// windows.h contain other def also, such as stdlib, malloc and tchar...
#include <windows.h>
#include <tchar.h> // for TCHAR
#include <stdio.h>
#include <malloc.h> // malloc()
int main(void)
{
DWORD retval = 0;
// testing Windows XP SP2 path, change accordingly...
// the path and the file are valid...
LPCWSTR szlongpath = L"C:\\Documents and Settings\\Johnny\\My Documents\\test.doc";
LPWSTR szshortpath = (LPWSTR) malloc(sizeof(MAX_PATH));
TCHAR buffer = MAX_PATH;
retval = GetShortPathName(szlongpath, szshortpath, buffer);
if (retval == 0)
{
printf("GetshortPathName() failed! Error : %d\n", retval);
}
else
{
// displaying short and long path
printf("The long path name = %S\n", szlongpath);
printf("The short path name = %S\n", szshortpath);
printf("The buffer length in TCHARs = %d\n", buffer);
}
if(szshortpath = NULL)
printf("memory freed!\n");
else
free(szshortpath);
return 0;
}
Output example:
The long path name = C:\Documents and Settings\Johnny\My Documents\test.doc
The short path name = C:\DOCUME~1\Johnny\MYDOCU~1\test.doc
The buffer length in TCHARs = 260
Press any key to continue . . .