Processクラスで他の実行ファイルを動かすには?

解決


OK牧場  2012-06-20 08:58:21  No: 143344

環境
Windows7
Visual Studio2010

フォーム画面にボタンを貼りつけてクリックすると、
別の.NETで作成されたコンソールアプリケーションを呼ぶ
サンプルを作成したのですが、
以下の結果になってしまいます。

■単独の場合の実行結果
呼ばれる側の実行ファイルは単独で起動すると
テキストログを出力します。

■フォーム画面から呼ばれた場合の実行結果
コンソールのようなものは立ち上がるが
テキストログが出力されません。

コンソールアプリ側に何か設定が足りないのでしょうか。
サンプルプログラムのソースを載せました。
よろしかったら何か教えていただけると助かります。

呼ぶ側
フォーム画面
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim path As String = "C:\ConsoleApplication1.exe"
    ' IEの起動は成功
    'Dim path as String = "iexplore.exe"

    Dim arg As String = ""
    Dim psi As ProcessStartInfo = New ProcessStartInfo(path, arg)
    Dim proc As Process = Process.Start(psi)
End Sub

呼ばれる側
コンソールアプリケーション(ConsoleApplication1.exe)
Sub Main()
    Dim sw As StreamWriter
    sw = New StreamWriter("test.txt", True)
    sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
    sw.Close()
End Sub


aaa  2012-06-21 01:49:20  No: 143345

コンソールアプリケーションのファイル書き込みで、ファイル名を"test.txt"としていますが、
これは具体的にはどのフォルダに書き込まれることを期待していますか?
もしかして、単独起動とアプリからのプロセス起動とではカレントフォルダが違うのかもしれません。
試しに、コンソールアプリケーションでの書き込みを行うファイル名を、絶対パスで指定してみてはどうでしょう。


OK牧場  2012-06-21 09:17:39  No: 143346

aaaさんのおっしゃる通りパスの設定に
問題がありました。
フルパスにしたところログが意図した位置に作成されました。

ありがとうございました。


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




  


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