環境
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
コンソールアプリケーションのファイル書き込みで、ファイル名を"test.txt"としていますが、
これは具体的にはどのフォルダに書き込まれることを期待していますか?
もしかして、単独起動とアプリからのプロセス起動とではカレントフォルダが違うのかもしれません。
試しに、コンソールアプリケーションでの書き込みを行うファイル名を、絶対パスで指定してみてはどうでしょう。
aaaさんのおっしゃる通りパスの設定に
問題がありました。
フルパスにしたところログが意図した位置に作成されました。
ありがとうございました。
ツイート | ![]() |