ホーム MFC Tips
アプリケーションが起動されたディレクトリ名を取得する
ドキュメント種別 MFC に関する文書
最終更新日 2002/06/17
PR
 アプリケーションが起動されたディレクトリを取得するには、 GetModuleFileName() でアプリケーションのフルパスを取得してから _tsplitpath() でパスを分解し、 その中のドライブ名とディレクトリ名を連結します。

TCHAR szAppDir[_MAX_PATH];  // アプリケーションが起動されたディレクトリ
TCHAR szFull[_MAX_PATH];    // 起動されたアプリケーションのフルパス名
TCHAR szDrive[_MAX_DRIVE];  // 起動されたアプリケーションのドライブ名
TCHAR szDir[_MAX_DIR];      // 起動されたアプリケーションのディレクトリ名

// 起動されたアプリケーションのフルパス名を取得
::GetModuleFileName(NULL, szFull, sizeof(szFull) / sizeof(TCHAR));

// フルパス名をドライブ名やディレクトリ名部分に分解
_tsplitpath(szFull, szDrive, szDir, NULL, NULL);

// ドライブ名とディレクトリ名部分を連結
_tmakepath(szAppDir, szDrive, szDir, NULL, NULL);
      

szAppDir にアプリケーションが起動されたディレクトリ名が入っています。

 ここで取得したディレクトリ名にファイル名を加えることで、 アプリケーションが起動されたディレクトリ内に置かれているファイルのフルパス名を取得することができます。 以下のコードでは iniファイル名を取得しています。

CString strINIfile;

// szAppDirは先ほど取得したディレクトリ名
strINIfile.Format(_T("%shogehoge.ini"), szAppDir);