본문 바로가기

Programing/Windows

현재 프로세스의 경로 가져오기

현재 프로세스의 경로가 필요할때는 아래의 함수를 사용하면 된다.
DWORD GetModuleFileName( HMODULE hModule, LPSTR lpFileName, DWORD nSize );
hModule : 경로를 가져올 프로세스의 HMODULE. NULL을 입력하면 현재 프로세스의 경로를 가져온다.
lpFileName : 가져온 경로를 저장할 배열(할당된 배열을 입력해야 된다)
nSize : lpFileName의 크기

이 함수를 사용하기 위해서는 #include <shlwapi.h> 를 include 해줘야 한다.

char path[MAX_PATH] = { 0, };
GetModuleFileName( NULL, path, MAX_PATH) ;

이렇게 해주면 실행중인 프로세스의 전체경로와 파일명까지 가져온다.
여기서 경로만 필요할 경우에는 아래의 함수를 사용하면 된다.
BOOL PathRemoveFileSpec( LPSTR pszPath );
pszPath : 파일명을 제거할 경로를 가지고 있는 배열

PathRemoveFileSpec( path );

위와 같이 함수를 추가하면 path 배열에서 파일명만 제거하여 경로만 남게된다.

상대 경로를 사용할 수 없는  함수를 사용해야 할 경우는 얻어진 경로를 다음과 같이 사용하면 된다.
sprintf_s( angPath, MAX_PATH, "%s\\res\\test.jpg", path);