実行しているファイル名を取得する

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
真由美

実行しているファイル名を取得する

#1

投稿記事 by 真由美 » 15年前

VC++でフリーソフトを作っております。

完成まであと少しの所まで来ました。
そこで実行したファイル名をどうしても取得しなければならないのですが
そのようなメソッドがリファレンスで見つかりませんでした。

※実行したファイル名がtest.exeならtestと拾ってきたいです。

実行されている関数名の取得?はあったのでそれ系列で探したのですが
このメソッドではないようです・・・。
String^ url = System::Reflection::MethodBase::GetCurrentMethod()->Name;

そういったことは出来ないのでしょうか?

Blue

Re:実行しているファイル名を取得する

#2

投稿記事 by Blue » 15年前

System::String^ s = System::IO::Path::GetFileNameWithoutExtension(System::Reflection::Assembly::GetExecutingAssembly()->Location);

でどう?

たかぎ

Re:実行しているファイル名を取得する

#3

投稿記事 by たかぎ » 15年前

.NET一般の話ではなく、Visual C++限定であれば、__argv[0]でファイル名を取得することもできます。
ただし、拡張子やディレクトリを取り除くのであれば、それなりの加工が必要です。

dic

Re:実行しているファイル名を取得する

#4

投稿記事 by dic » 15年前

自分で作るソフトの名前って最初から自分で決めるのはでなく?

私は
#define DEF_TITLE "application"
とソースコードに埋め込んでます

YuO

Re:実行しているファイル名を取得する

#5

投稿記事 by YuO » 15年前

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:実行しているファイル名を取得する

#6

投稿記事 by 真由美 » 15年前

皆様、ご丁寧に回答ありがとうございました。

System::String^ s = System::IO::Path::GetFileNameWithoutExtension(System::Reflection::Assembly::GetExecutingAssembly()->Location);

で行けました!!

ありがとうございます。
.netなのですがメソッドが多すぎな気がします・・・。
解決しましたがMSDNのサイト以外でよく使うものが書いてあるようなサイトはないでしょうか?

閉鎖

“C言語何でも質問掲示板” へ戻る