2009년 6월 23일 화요일

프로세스 실행 경로

프로그램이 실행하는 경로를 찾아온다.

 

프로그램이 실행될때 상대 경로를 사용하게 되면 주 실행되는 프로세스에 해당하는 위치점부터 경로가 시작되게 된다.

 

이때 다른 프로세스가 실행되면 기존에 사용하던 프로세스의 경로를 잃게 된다.

 

프로세스가 실행되는 위치점부터 경로를 찾기 위해 사용한다.

 

TCHAR szBuffer[MAX_PATH];
 int nPathLengh = GetModuleFileName(NULL, szBuffer, MAX_PATH);
 CString strTemp = (LPTSTR)szBuffer;
 int nFindcount = strTemp.ReverseFind('\\');
 strTemp = strTemp.Left(nFindcount+1);

상대 경로로 설정된 파일은

 

파일을 읽고 쓸때 실행되는 프로그램의 경로에 따라 파일을 못찾는 경우가 발생한다.

 

그때는 파일이 위치하고 있는 절대경로로 바꾸어 실행하면 된다.

 

실행중인 프로그램의 절대 경로를 얻는다.

 

 

DWORD GetModuleFileName(
  HMODULE hModuleLPTSTR lpFilenmae,  DWORD nSize

);

 

TCHAR szPath[MAX_PATH]; /// 저장될 파일 경로 (실행된 프로그램의 파일 이름까지 저장)
   
    if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
    {
        printf("GetModuleFileName failed (%d)\n", GetLastError());
        return FALSE;
    }

 

 CString strTemp = (LPTSTR)szPath;

 int nFindcount = strTemp.ReverseFind('\\'); /// 뒤의 마직막에 위치한 파일명까지의 String 수

 strTemp = strTemp.Left(nFindcount+1); /// 왼쪽 부터 짤라내기 (파일 이름 제외)

 

출처 : MSDN 2006, 10


 

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(VC++)통

댓글 없음:

댓글 쓰기