3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(VC++)自身のアプリケーションファイルのexeファイルのパスを取得する方法

exeと同じ場所にある別のexeをキックする要件だったので、ShellExecute で引数に ".\キックするexe名" としたかったのですが、これだとどうもカレントディレクトリから見た相対パスになるので、このexe自体が別のアプリから呼ばれてカレントディレクトリが変わっていた時は、意味がないようです。

ということで、自身のアプリケーションファイルのexeファイルのパスを取得する方法です。

MFCだと、自身のアプリケーションクラスのGetModuleFileName関数を使えるとできるようです。

こんな感じです。

// CApp 初期化

BOOL CApp::InitInstance()

{

....省略

//自分のexeのパス確認

TCHAR path[_MAX_PATH];

::GetModuleFileName(NULL,path,sizeof path);

}

非常に簡単ですね。

追記:

GetModuleFileName関数は Windows API となるので、MFCじゃなくてもWin32アプリケーションでも使えます。

(#include  が必要となりますが。。)

参考:

iniファイルをexeと同じパスで使用する方法(VC++6.0)

MSDN:GetModuleFileName