Click here to Skip to main content
15,891,248 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi All,

Please check this code and suggest why it is not getting the full path name.

Path is getting like this:
D:\MYFolder\SVN_MY~1\DEVELO~1\SOCF9E~1\Release\sample_Capture.txt
instead of
D:\MYFolder\SVN_MYApp\Development\SourceCode_Ported - Win7\Release\sample_Capture.txt

C++
CString GetExePath()const 
{
	TCHAR directory [200] = {ZERO_VAL};	
	GetModuleFileName(NULL, directory, sizeof(directory));	
	CString l_strFilePath = directory;
	TCHAR ch = _T('\\');
	int location = l_strFilePath.ReverseFind(ch) ;
	l_strFilePath = l_strFilePath.Left(location+1);
	return l_strFilePath;
}

Thanks
Sam
Posted
Updated 14-Mar-13 21:45pm
v3
Comments
Jochen Arndt 15-Mar-13 3:44am    
You already get correct answers to your question.
But there is an error in your code. The buffer size passed to GetModuleFileName() must be in TCHARs. So you must use:
GetModuleFileName(NULL, directory, sizeof(directory) / sizeof(TCHAR));
nv3 15-Mar-13 4:09am    
Very important hint, Jochen. Got my 5.

The GetModulePathName[^] documentation mentions
The string returned will use the same format that was specified when the module was loaded.

What you're getting is the short path name[^]

Use GetLongPathName[^] to convert the returned path into it's long path form.
 
Share this answer
 
Comments
Mr Sam 15-Mar-13 4:53am    
Hi! parths,
Using GetLongPathName() resolved my issue. Thank You!
Use
C++
GetLongPathName
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900