○実行ファイルのパス

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main(){

  char Path[MAX_PATH+1]; 

  if(0!=GetModuleFileName( NULL, Path, MAX_PATH )){// 実行ファイルの完全パスを取得

	  char drive[MAX_PATH+1]
			,dir  [MAX_PATH+1]
			,fname[MAX_PATH+1]
			,ext  [MAX_PATH+1];

	  _splitpath(Path,drive,dir,fname,ext);//パス名を構成要素に分解します
  
	  printf("完全パス : %s\n",Path);
	  printf("ドライブ : %s\n",drive);
	  printf("ディレクトリ パス : %s\n",dir);
	  printf("ベース ファイル名 (拡張子なし) : %s\n",fname);
	  printf("ファイル名の拡張子 : %s\n",ext);

  }
	return 0;
}

▼処理結果

完全パス : C:\Documents and Settings\Administrator\デスクトップ\testProject\Debug\testProject.exe
ドライブ : C:
ディレクトリ パス : \Documents and Settings\Administrator\デスクトップ\testProject\Debug\
ベース ファイル名 (拡張子なし) : testProject
ファイル名の拡張子 : .exe



■実行ファイルのパスの取得クラス

//************************************************
//実行ファイルのあるパスを取得するクラス
//
//使用方法
//int main(){
//	printf("%s\n",app::My.path); 
//	return 0;
//}
//c:\test\test.exe		として実行させると
//c:\test\		ファイルのパスが出力されます
//************************************************

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

class app{
private:
	app(){
		path=(char*)calloc(MAX_PATH+1,sizeof(char));
		char buf[MAX_PATH+1]; 
		if(0!=GetModuleFileName( NULL, buf, MAX_PATH )){// 実行ファイルの完全パスを取得
			char drive[MAX_PATH+1]
				,dir  [MAX_PATH+1]
				,fname[MAX_PATH+1]
				,ext  [MAX_PATH+1];
			_splitpath(buf,drive,dir,fname,ext);//パス名を構成要素に分解します
  			sprintf(path,"%s%s",drive,dir);
		}
	}
public :
	static app My;
	char*path;
};
app app::My;

int main(){
	printf("%s\n",app::My.path); 
	return 0;
}



▲トップページ > Windows と C++