- ベストアンサー
VC++2005で外部プログラムを起動
VC++2005EEを使って実行ファイルとは違うフォルダにある外部プログラムの起動をしようとしています。 System::Diagnostics::Process::Start を使って起動しようとしたら起動はしたのですが、本来その外部プログラムが読み取るデータ(外部プログラムと同じフォルダにあるデータ)を読み込んでくれません。 どうしてなのでしょうか?また、どうしたら正常に起動することができるのでしょうか? VC++はまだ始めたばかりでよくわかりませんが、よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 本来その外部プログラムが読み取るデータ(外部プログラムと同じフォルダにあるデータ)を読み込んでくれません。 その外部プログラムは「カレントディレクトリ」にあるファイルを読むように作られているのではないでしょうか? System::Diagnostics::Process::Start で起動する際に、そのプロセスのカレントディレクトリをどのように設定するのかは… ちょっと判りませんでした。 # カレントディレクトリは…ショートカットなどで設定できる「作業フォルダ」のコトです。 外部プログラムの方を修正可能であれば…外部プログラムのパス名を取得して、文字列操作でデータファイルの絶対パス名を作成してアクセスするように変更するというのもあります。
その他の回答 (1)
- x415f484f
- ベストアンサー率71% (57/80)
おそらく呼出元の実行ファイルのディレクトリになっているから ではないかと思います。 外部プログラムがどういう仕様なのかはわかりませんが、引数で データのファイル名を指定可能であれば、フルパスで指定すると いう方法もあると思いますが。 呼出元の実行ファイルがディレクトリと関係がないのであれば System::Diagnostics::Process::Start を呼ぶ前に System::IO::Directory::SetCurrentDirectory を呼んで外部の プログラムと同じディレクトリに変更してはいかがでしょうか? ※ ディレクトリはフォルダと読みかえてください。
お礼
回答ありがとうございます。 System::IO::Directory::SetCurrentDirectoryでディレクトリを変えたらうまくいきました。
お礼
回答ありがとうございます。カレントディレクトリというのをしらなかったので参考になりました。