티스토리 뷰

MFC

[MFC] 실행 파일의 경로 얻기 - GetModuleFileName()

개발하는꼬물이 2018. 6. 12. 16:19

*** 현재 실행파일(.exe)의 위치를 기준으로 경로를 얻어 작업하고 싶을 때, 다음의 함수를 이용 !



1) 정의

   :  DWORD WINAPI GetModuleFileName(

HMODULE hModule,  // 현재 실행되고 있는 모듈의 핸들, 또는 NULL(자신의 실행경로 반환)

LPTSTR IpDileName,  // 실행 경로를 받을 포인터

DWORD nSize  // 실행 경로가 들어갈 버퍼의 길이

);



     ex) GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH); 

          : szPath에 현재 실행되는 프로그램의 FullPath가 넘어옴 (ex) c://Desktop//TestPJT//Debug//TestPJT.exe)


2) 예시

/* 실행 파일의 경로 얻기 예시 */

TCHAR szTemp[_MAX_PATH + 1];
GetModuleFileName(AfxGetApp()->m_hInstance, szPath, _MAX_PATH);
// 실행 파일의 경로 반환 ( ex) szPath의 값: C://Desktop//Test//Debug//Test.exe )

CString strProgramDir = szPath;

int nLen = strProgramDir.ReverseFind('\\'); 

if(nLen > 0)
	strProgramDir = strProgramDir.Left(nLen);  
	// nLen 길이만큼 문자열을 자름 ( strProgramDir의 값: C://Desktop//Test//Debug )
 


=> 더 상위의 경로를 얻고 싶다면 위의 예시와 같이 경로 구분 문자인 '\\' 를 이용하여 경로를 한 단계씩 지워내면 됨!


댓글