처음 포켓 PC용으로 프로그램 짜보면서 eMbedded Visual C++의 강력한 힘을 몸으로 느끼며 신나게 작업을 했는 데, 한참을 헤맨 것은 어이없게도 실행 파일의 실행나 작업 디렉토리의 경로를 얻는 함수가 없다는 것이었습니다. (Win32 환경의 GetCurrentDirectory 같은… - 하다 못해 Winmain 에 인자로 넘어오는 실행파일 경로도 안 넘어 오더군요.)

그래서 무식하게 절대 경로로 사용하다가 아래 함수를 사용해서 해결했습니다. (챙피하게도 이 함수 찾는 것도 몇 달 걸렸습니다.)

WINAPI DWORD GetModuleFileName(
   HMODULE hModule,
   LPWSTR lpFilename,
   DWORD nSize );

모듈의 실행 경로를 얻어내는 파일로 WinMain 에 넘어오는 인스턴스를 첫번째 인자로 넘기면 실행한 파일의 파일명을 얻어옵니다. (물론 Unicode 겠죠.) 절대 경로로 넘어오므로 파일명에서 실행 파일의 경로를 얻어낼 수 있습니다.

이 함수를 이용하니 실행파일하고 데이터 파일을 원하는 아무 폴더에나 넣을 수 있게 되었습니다. (이전에는 데이터 파일은 지정해둔 절대 경로에 반드시 있어야 했었죠.)

포켓 PC도 작업하시는 분은 참고하시면 도움이 되실지도...

댓글을 달아 주세요

  1. Taiky 2005/02/14 16:45  댓글주소  수정/삭제  댓글쓰기

    GetModuleFileName으로 실행경로를 구하는게 좋은것 같습니다. GetCurrentDirectory는 반드시 현재 실행화일이 존재하는 폴더가 아닐경우도 있기때문에 문제의 소지가 있었습니다.ㅜㅜ; 특히나 MFC로 툴만들때 GetCurrentDirectory로 경로구하면..최근에 로딩한 파일의 경로로 바뀌기때문에..

  2. wonder woman amateur 2007/10/18 01:35  댓글주소  수정/삭제  댓글쓰기

    친구는 너의 위치의 현재 팬이 되었다!