(VC++)自身のアプリケーションファイルのexeファイルのパスを取得する方法で、Windows API の GetModuleFileName 関数を使うと自身のフォルダパスを取得することができることを書きました。
で、今回はファイル名を含むフルパスから、フォルダパスを取得する方法です。
普通に文字列操作でやってもいいんですが、PathRemoveFileSpec というAPIがあるようなので、それを使ってみました。
PathRemoveFileSpec 関数を使うには、shlwapi.h のインクルードと shlwapi.lib とのリンクが必要なようです。
これは Visual Studio 2008 の場合、プロジェクトのプロパティ → 構成プロパティ → リンカ → 入力 → 追加の依存ファイル で shlwapi.lib と入力すればいいようです。このリンクの方法を探すのに時間がかかりましたw
#include
//このexeのパス取得
DWORD dwRet;
TCHAR path[1024];
dwRet = GetModuleFileName(NULL, path, sizeof(path));
if(dwRet == 0) {
//エラー処理など(省略)
}
//exeのパスからファイル名を除去し、ディレクトリ取得
BOOL ret = PathRemoveFileSpec(path);
ただ、IEが無いとこの関数は使えないようです。