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
参考: