ProcessStartInfo psi = new ProcessStartInfo(BatchFile)
Process p = Process.Start(psi)
p.ID
WindowsTaskManagerに表示されるプロセスIDと異なるのはなぜですか
(BatchFile
適切なパラメータを持つ外部プログラムへのパスです)
ProcessStartInfo psi = new ProcessStartInfo(BatchFile)
Process p = Process.Start(psi)
p.ID
WindowsTaskManagerに表示されるプロセスIDと異なるのはなぜですか
(BatchFile
適切なパラメータを持つ外部プログラムへのパスです)
BatchFileは、他のプロセスを1つずつ実行するある種のcmdまたはbatファイルだと思います。
したがって、Windowsタスクマネージャーでは、バッチファイルによって実行されるプロセスのIDが実際に表示されます。
例
私がこれをするなら
var p = Process.Start("notepad.exe");
p.Id
PID
タスクマネージャからと一致します。
ただし、これを行うと:
var p = Process.Start("test.cmd"); // test.cmd has notepad.exe call inside
p.Id
PID
タスクマネージャに表示されるものとは異なります。
これは、バッチファイルによって開始されp.ID
たプロセスのIDではなく、バッチファイルを実行しているプロセスのIDであるためだと思います。
正しいオーバーロードProcess.Start
を使用して、実行可能ファイルを直接起動できます
プロセスIDは、プロセスが動作している間のみ意味があります。最初に確認することは.HasExited
、これがtrueの場合、プロセスIDを無視することです。もはや意味がありません。
画面上にまだ表示されているように見えても、何かを開始してプロセスを残さない方法はいくつかあります。