- ベストアンサー
外部プロセスのエラーについて
- 外部プロセスを起動する際に発生するエラーについて質問です。
- 起動元のプロセスと直接起動した場合でエラーが異なるのかについて詳しく知りたいです。
- VB2008での開発であり、解決策やヒントを求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Bの指定はどの様にしていますか。 多分ですが、Bへのフルパスが書いてないか、Bにpathが通っていないのではないかと思われます。 よく例題でノートパッドを起動するという場合に"notepad.exe"と書いてありますが、これは notepad.exeにpathが通っているからフルパスを書かなくて済むだけです。例えば下記にある例で http://msdn.microsoft.com/ja-jp/windows/ff467967 次の様に指定していますが startInfo.FileName = "notepad.exe" 使用するファイルはフルパスで指定しています。 startInfo.Arguments = "C:\users\public\readme.txt" システムディレクトの場合はフルパスを書くより「%ナンタラ%」という環境変数の指定のほうが良いので、上記の例の使用するパスは??ですが。 XPの場合は「user」ではなく「Document and Setting」のように名前が違いますが、%ナンタラ%を使えばこの違いも吸収できます。 http://www.atmarkit.co.jp/fwin2k/special/win64_03/win64_03_03.html http://www.atmarkit.co.jp/fwin2k/win2ktips/267swchos/swchos.html 特殊フォルダのパスを取得する方法もあります。 http://dobon.net/vb/dotnet/file/getfolderpath.html http://powershell.wiki.fc2.com/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0
補足
早速のレス、ありがとうございます。 せっかくご説明いただいたのですが、私の説明不足だったようで、 問題が正確に伝わっていませんでした。 申し訳ありません。 プロセスBの起動そのものは正常に始まりますが、 そのロード中に画面上のコントロールに値を設定することで、 イベントが発生し、エラーはその中で発生しています。 そのイベント中で参照しているオブジェクトは BackGroundWorkerとかいうコントロールだったかと思います。 パスの指定に環境変数が使えるのは知りませんでした。 携わるプログラムは、たいてい外部ファイルに必要なパスを持っているので、 こういった方法があることには気がつきませんでした。 興味深く拝見しました。ありがとうございます。