○実行ファイルのパス
#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++