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

System.Diagnostics.Process

分類:[.NET]

度々、参考にさせていただいています。
このたび、System.Diagnostics.Processを使用して、子プロセスを呼ぶ処理を作成
しました。
Aプロセス(メニュー)からBプロセスを呼び、BプロセスからCプロセスを呼ぶ。
(全て呼び出したプロセスが終了するまで、処理はWaite状態)
ここで、Cが終了した時、Bのフォームを最前面に表示(固定する必要はないです)
させたいのですが、Aが最前面に出てしまいます。良い方法はないでしょうか。
Bのプロセスで Me.TopMost = True をセットすると、完全に固定されてしまうので、
それはしたくありません。
良い方法をご存知のかた、よろしくお願いします。

<コーデイング内容>
'プロセス起動
Me.ShowInTaskbar = False
Process1.StartInfo.FileName = "BProcess.Exe"
Process1.StartInfo.Arguments = G_strLoginPassword & " " & "MOTOCHO"
Process1.Start()
Process1.WaitForInputIdle()

'プロセス終了
Process1.WaitForExit()
If Process1.HasExited = False Then
If Process1.Responding Then
Process1.CloseMainWindow()
Else
Process1.Kill()
End If
End If
  • 題名: Re[1]: System.Diagnostics.Process
  • 著者: Jubei
  • 日時: 2004/05/09 0:28:15
  • ID: 3951
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No3927に返信(しおぱぱさんの記事)

> ここで、Cが終了した時、Bのフォームを最前面に表示(固定する必要はないです)
> させたいのですが、Aが最前面に出てしまいます。良い方法はないでしょうか。

どういった現象でハマっているのか読み取れなかったのですが、
BプロセスがCプロセスの終了を待って、Cプロセスが終了した指示点で
Bプロセスは自分のフォームを前面に持ってきたいという事なんですよね?
であれば、P/Invokeを使ってSetForegroundWindowに前面に持ってきたい
フォームを指定すればいいかと思います。

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