- ベストアンサー
CreateProcessでの実行ファイルの操作について
- CreateProcessでは相対パスや絶対パスは使えないのか?
- リダイレクトも使えないのか?
- CreateProcessでの実行ファイルの操作についての質問です。カレントディレクトリに実行ファイルをいれておいて、実行してくれるのですが、相対パスや絶対パスを使うと実行されないようです。また、リダイレクトも使えないようです。VC++ 6.0 Win98環境で試しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> もし、お時間がありましたら部分的に囲み方法ではダメなのか教えてもらえないでしょうか? 「*何故* ダメなのか?」ってこと? 想像でしかないですが、解釈する人が違うから、としか言いようが無いですね。 コマンドラインからの場合は、cmd.exe (もしくは Shell) が解釈している。CreateProcess の場合には違う人が解釈している、と。
その他の回答 (2)
- a-kuma
- ベストアンサー率50% (1122/2211)
> 相対パスが使えないのはわかるのですが、絶対パスが使えないのがわかりません。 ああ、きちんと質問を読んでなかった。 私が最初に書いたのは、第一引数のことでした。これは NULL にできますね。 であれば、空白を含むディレクトリの扱いが良くないのでしょう。 ダブルクォートで、My Documents だけをくくるのではなく、コマンド全体をくくってください。 char szCommand[] = "\"c:\\My Documents ... \\eee\"";
お礼
出来ました!ありがとうございます。 でも、なぜ、My Documentsの部分だけではダメかわかりません。コマンドライン上だったら大丈夫なのに。。 szCommandの部分がコマンドライン上の命令と一致していると考えていたのですが、微妙に違うみたいですね。 もし、お時間がありましたら部分的に囲み方法ではダメなのか教えてもらえないでしょうか? 明日には締め切りたいと思います。 ありがとうございました。
- a-kuma
- ベストアンサー率50% (1122/2211)
> CreateProcessでは、相対パスや絶対パスは使えないのでしょうか? 使えません。マニュアルに「フルパスで」と書いてありますね。 > あと、リダイレクトも使えないのでしょうか?(動作しなかったので・・) ">" を書いてもリダイレクトにはなりません。STARTUPINFO を利用します。
補足
回答ありがとうございます。 >使えません。マニュアルに「フルパスで」と書いてありますね。 相対パスが使えないのはわかるのですが、絶対パスが使えないのがわかりません。 フルパスは絶対パスのことじゃないんですか?
お礼
もっと勉強して理解していこうと思います。 ありがとうございました。