ページ 1 / 1
実行しているファイル名を取得する
Posted: 2010年3月26日(金) 11:21
by 真由美
VC++でフリーソフトを作っております。
完成まであと少しの所まで来ました。
そこで実行したファイル名をどうしても取得しなければならないのですが
そのようなメソッドがリファレンスで見つかりませんでした。
※実行したファイル名がtest.exeならtestと拾ってきたいです。
実行されている関数名の取得?はあったのでそれ系列で探したのですが
このメソッドではないようです・・・。
String^ url = System::Reflection::MethodBase::GetCurrentMethod()->Name;
そういったことは出来ないのでしょうか?
Re:実行しているファイル名を取得する
Posted: 2010年3月26日(金) 11:53
by Blue
System::String^ s = System::IO::Path::GetFileNameWithoutExtension(System::Reflection::Assembly::GetExecutingAssembly()->Location);
でどう?
Re:実行しているファイル名を取得する
Posted: 2010年3月26日(金) 12:34
by たかぎ
.NET一般の話ではなく、Visual C++限定であれば、__argv[0]でファイル名を取得することもできます。
ただし、拡張子やディレクトリを取り除くのであれば、それなりの加工が必要です。
Re:実行しているファイル名を取得する
Posted: 2010年3月26日(金) 19:47
by dic
自分で作るソフトの名前って最初から自分で決めるのはでなく?
私は
#define DEF_TITLE "application"
とソースコードに埋め込んでます
Re:実行しているファイル名を取得する
Posted: 2010年3月26日(金) 21:14
by YuO
CLR環境で起動時したアセンブリの名前を取得するのであれば,
GetExecutingAssembly (「現在」実行中のアセンブリの取得) よりもGetEntryAssemblyの方がよいです。
MSDN: Assembly.GetExecutingAssembly メソッド (System.Reflection)
http://msdn.microsoft.com/ja-jp/library ... embly.aspx
MSDN: Assembly.GetEntryAssembly メソッド (System.Reflection)
http://msdn.microsoft.com/ja-jp/library ... embly.aspx
UnmanagedなWindows環境では,GetModuleFileName APIにNULLを渡すことで起動したプログラムのフルパスを取得できます。
あとは,PathFindFileName APIとPathRemoveExtension APIでファイル名から拡張子を抜かした部分を取得できます。
MSDN: GetModuleFileName Function (Windows)
http://msdn.microsoft.com/en-us/library/ms683197.aspx
MSDN: PathFindFileName Function (Windows)
http://msdn.microsoft.com/en-us/library/bb773589.aspx
MSDN: PathRemoveExtension Function (Windows)
http://msdn.microsoft.com/en-us/library/bb773746.aspx
Re:実行しているファイル名を取得する
Posted: 2010年3月27日(土) 09:48
by 真由美
皆様、ご丁寧に回答ありがとうございました。
System::String^ s = System::IO::Path::GetFileNameWithoutExtension(System::Reflection::Assembly::GetExecutingAssembly()->Location);
で行けました!!
ありがとうございます。
.netなのですがメソッドが多すぎな気がします・・・。
解決しましたがMSDNのサイト以外でよく使うものが書いてあるようなサイトはないでしょうか?