DOBON.NET DOBON.NETプログラミング掲示板過去ログ

別アプリケーションの起動

環境/言語:[win 2000 VB.NET2003 Framework1.1]
分類:[.NET]

現在、別々の2つのアプリケーションが存在していて、一つのアプリケーションを起動したらもう一つのアプリケーションを起動してるのですが、アプリケーションを終了する時にアプリケーションから起動したもうひとつのアプリケーションを終了したいのですが方法が分かりません。ご存知のかた教えて下さい。
■No6712に返信(HIROさんの記事)
> 現在、別々の2つのアプリケーションが存在していて、一つのアプリケーションを起動したらもう一つのアプリケーションを起動してるのですが、アプリケーションを終了する時にアプリケーションから起動したもうひとつのアプリケーションを終了したいのですが方法が分かりません。ご存知のかた教えて下さい。

アプリケーションを起動するときに、
Process.Startを使っているのであれば、
以下のように終了できます。
' 宣言部
Dim proc As Process
' 起動時
proc = Process.Start("EXE")
' 終了時
proc.Kill()
2004/10/15(Fri) 18:21:22 編集(投稿者)

■No6713に返信(rakiさんの記事)
> アプリケーションを起動するときに、
> Process.Startを使っているのであれば、
> 以下のように終了できます。
> ' 宣言部
> Dim proc As Process
> ' 起動時
> proc = Process.Start("EXE")
> ' 終了時
> proc.Kill()

CloseMainWindow() メソッドでやるべきかと。
Kill() メソッドはプロセスの強制終了ですね。

Source:--------------------------------------------------------------------

  ' エントリ ポイント
  Friend Sub Main()
    Try
      OnotherProcess = Process.Start("G_生産管理メニュー.EXE")
      Application.Run(New FormMain)
    Catch ex As Exception
      MessageBox.Show(ex.ToString())
    End Try
  End Sub

または、メインFormが開いたタイミングでプロセスを起動しておき、

  Private Sub FormMain_Disposed(' 以下略
    If OnotherProcess.HasExited = False Then
      OnotherProcess.CloseMainWindow()
    End If
  End Sub

---------------------------------------------------------------------------

あと、スコープの寿命にも注意した方がいいですね。

■追記

 GUIがないFormならKill()メソッドが唯一の手段となります。(.NET Frameworkでは)
 「画面(Form)がある」場合は、CloseMainWindow()メソッドで終了するのが、
 一般的と思いますが、実際には、MainWindowHandleがあるかどうかを見て、
 失敗時にKill()メソッドを呼ぶと良いでしょう。</pre>
早速の回答ありがとうございます。
実際に確認してみたいと思います。
また、問題点が発生したら質問しますけどそのときはよろしくお願い致します。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板