천객만래 [千客萬來] (It has an interminable succession of visitors)


[개발/MFC] 자신의 파일경로 얻기, 자신의 경로 얻기

현재 실행중인 파일의 경로를 얻는 방법이 있습니다.
간단한 만큼 한 번만 알아두면 자주 사용되는 이 함수를 쉽게 사용할 수 있습니다.

기본적으로 파일명까지 포함해서 현재 실행중인 파일의 경로를 얻을 수 있습니다.
이렇게 파일을 포함한 FullPath에서 파일명을 제외한 경로만을 얻는 것은
추가적으로 함수를 사용해 주어야 합니다.

먼저 이들 함수를 사용하기 위해서는  다음과 가튼 include와 comment를 달아줍니다.

#include <shlwapi.h>
#pragma comment (lib, "shlwapi.lib")

아래는 파일명 포함 전체 경로를 얻는 함수 입니다.

const int MAX_SIZE = 255;
char szPath[MAX_SIZE] = {0, };

GetModuleFileName(NULL, szPath, MAX_SIZE); // or GetModuleFileName(::AfxGetInstanceHandle(), szPath, MAX_SIZE); 

 // szPath 변수에는 실행중인 파일명을 포함한 전체 경로 값이 있습니다. 예를 들자면 c:\program files\mslive\mslive.exe 같은거죠.

이제는 여기에서 파일명을 제외한 전체경로만을 구합니다.

PathRemoveFileSpec(szPath);
// szPath에서는 파일명을 제외해서 다음과 같을 수 잇습니다. c:\program files\mslive

자주 사용하는 함수들인만큼 하나의 함수나 모듈로 만들어 두면 아주 편하게 사용할 수 있습니다.


Posted by SB패밀리

[개발/MFC] 프로그램의 절대경로 찾기

API 중에 절대경로를 찾아 주는게 있다.

GetModuleFileName() 함수인데
windows.h 를 include해서 사용하면 된다.

DWORD GetModuleFileName(HMODULE hModule, LPTSTR lpFileName, DOWRD nSize);

hModule 현재 실행되고 있는 모듈 핸들 또는 NULL값(자신의 실행경로)
lpFileName 프로세스 실행 경로 반환
nSize : lpFileName의 버퍼크기

대체로 자기자신의 실행경로를 찾는데 많이 사용하게 되더라.


Posted by SB패밀리