ファイルのパスを取得するには?


Owl  2005-02-01 09:03:18  No: 56221

VB6.0からVC++.NETへ変えようと思っているのですが、
VBのApp.Pathのように
実行しているコードと同じフォルダの文字列(「パス」っていうんですか?)
を取得するにはどうすればよいのでしょうか?


シャノン  2005-02-01 11:19:35  No: 56222

GetModuleFileName を使います。
.NET なら、Assembly::GetExecutingAssembly()->get_Location() です。たぶん。


Kanchan  2005-02-12 05:26:58  No: 56223

__argv[0]  でも参照できます。
ちなみに  __argv[1] 以降にはコマンドライン引数が格納されます。


瀬戸っぷ  2005-02-12 06:32:20  No: 56224

> __argv[0]  でも参照できます。

パスが入っているかは環境依存だったような。
Win9X系とWinNT系で結果が違ったような…

ってか、私の回答&その後…でした。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200305/03050009.txt


Kanchan  2005-02-13 09:26:16  No: 56225

>パスが入っているかは環境依存だったような。
>Win9X系とWinNT系で結果が違ったような…

瀬戸っぷ様  フォローありがとうございます。
環境依存がありましたか。知らずにいつも__argv[0]を使っていました。
ちなみに、手元にあるWinXPおよびWin2000ではフルパスが取得できています。
WinNTの場合の問題でしょうか?

ともかく、GetModuleFileNameの方が確実そうですね。


瀬戸っぷ  2005-02-13 09:50:13  No: 56226

> ちなみに、手元にあるWinXPおよびWin2000ではフルパスが取得できています。

手元のWin2000SP4で下記のソースを実行。
「コマンド プロンプト」ではexe名だけ、
VC6.0からの実行ではフルパスで表示されました。
(ちなみに、コマンドプロンプトで相対パス指定で実行したら指定したとおりのパスが表示されました。)

#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("%s\n", argv[0]);
  return 0;
}

> ともかく、GetModuleFileNameの方が確実そうですね。

ですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加