반응형
현재 실행되고 있는 파일에 실행경로를 받아와서
처리하고 싶은 일이 생겨 찾아보니 아래 두 함수를 이용하면 된다.
1. GetModuleFileName 원형
DWORD GetModuleFileNameA(
[in, optional] HMODULE hModule, //NULL 이면 현재 프로세스
[out] LPSTR lpFilename, //경로를 받는 버퍼
[in] DWORD nSize //버퍼의 크기
);
2. GetModuleFileName 사용방법
CString strExeFileName;
GetModuleFileName(NULL, strExeFileName.GetBuffer(_MAX_PATH), _MAX_PATH);
strExeFileName.ReleaseBuffer();
- 현재 실행중인 exe 파일의 경로를 받아오기 위해서 첫번째 매개변수는 NULL을 사용하였다.
3. _wsplitpath원형
void _wsplitpath(
const wchar_t *path, // 전체 경로
wchar_t *drive, //드라이브(ex. C:, D:) 드라이브가 필요하지 않으면 NULL
wchar_t *dir, // 디렉토리 경로 필요없을 경우 NULL
wchar_t *fname, //기본 파일이름 (확장자명 X) 필요없을 경우 NULL
wchar_t *ext //파일 확장자명 필요없을 경우 NULL
);
4. _wsplitpath사용방법
TCHAR drive[_MAX_DRIVE];
TCHAR path[_MAX_PATH];
TCHAR filename[_MAX_FNAME];
TCHAR ext[_MAX_EXT];
_wsplitpath(strExeFileName, drive, path, filename, ext);
5. 전체 코드
CString strExeFileName;
GetModuleFileName(NULL, strExeFileName.GetBuffer(_MAX_PATH), _MAX_PATH);
strExeFileName.ReleaseBuffer();
TCHAR drive[_MAX_DRIVE];
TCHAR path[_MAX_PATH];
TCHAR filename[_MAX_FNAME];
TCHAR ext[_MAX_EXT];
_wsplitpath_s(strExeFileName, drive, path, filename, ext);
strExeFileName.Format(_T("%s%sCommonProgressBar.exe"), drive, path);
6. 실행화면
참고
https://learn.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulefilenamea
https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/splitpath-wsplitpath?view=msvc-170
반응형
'프레임워크 > MFC' 카테고리의 다른 글
[MFC] 작업표시줄 어플리케이션 아이콘 숨기기 (0) | 2022.11.22 |
---|---|
[MFC] RC1015 : cannot open include file 'afxres.h' (0) | 2022.11.22 |
[MFC] Progressbar 사용법. (0) | 2022.11.22 |
[MFC] 외부 프로그램 실행 예제 (CreateProcess, ShellExecute) (0) | 2022.07.21 |
[MFC] SQLite3연동하기 예제 포함(DB 생성, DB select) (0) | 2022.07.01 |
댓글