오늘은 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#실행중인#위치#폴더
'프로그램 > C++' 카테고리의 다른 글
강제로 프로세스 종료하기 (0) | 2021.01.15 |
---|---|
Http Request 로 파일 다운로드 하기 (0) | 2021.01.14 |
Dialog 모달리스 사용하기 (0) | 2021.01.13 |
클래스기반의 쓰레드 사용하기 (0) | 2021.01.13 |
vc++에서 간단히 사용헐 수 있는 html 파싱 dll (0) | 2021.01.11 |