프로그램/C++

현재 실행중인 폴더 위치

네오류이 2021. 1. 13. 17:07
728x90
반응형

오늘은 C++에서 현재 실행되고 있는 exe의 폴더 위치를 찾는 방법에 대해 설명합니다.

 

기본 방식이 GetModuleFileName 이란 함수를 통해서 위치를 찾게 되고 그것을 _tsplitpath 함수를 통해 분리하고 원하는 형태로 다시 재구성해서 현재 실행되고 있는 위치를 CString 에 저장해 놓고 필요한 곳에서 사용하시면 됩니다.

 

6.0 기준입니다

 

* 소스코드

 

TCHAR cur_folder[_MAX_PATH]={0,};

        GetModuleFileName(AfxGetApp()->m_hInstance, cur_folder, _MAX_PATH);

//AfxMessageBox(cur_folder);

TCHAR drive[_MAX_DRIVE] = _T(""), dir[_MAX_DIR] = _T("");

TCHAR fname[_MAX_FNAME] = _T(""), ext[_MAX_EXT] = _T("");

_tsplitpath( cur_folder, drive, dir, fname, ext );

m_exe_str.Format("%s%s", drive, dir);                         // c:/aaaa/bin/

m_exe_str = m_exe_str.Left(m_exe_str.GetLength()-1); // c:/aaaa/bin

 

 

위 부분을 보시면 GetModuleFileName 함수가 결국 핵심입니다. 나머지는 알아서 코딩을 하시면 되는데 

 

끝에

 

m_exe_str = m_exe_str.Left(m_exe_str.GetLength()-1);

 

이렇게 하는 이유는 저같은 경우 마지막 \ 는 사용하지 않기 때문입니다.

 

이 부분은 상황에 맞게 사용하시면 됩니다.

 

 

 

#cur_folder#실행중인#위치#폴더

728x90
반응형