人気ブログランキング | 話題のタグを見る
(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
by jehoshaphat | 2009-02-16 02:42 | C/C++開発


<< (VC++).Net Fram... (VC++)Windows環境... >>