c# – 如何获取正在运行的进程的ExitCode

我正在编写一个应用程序来检查另一个应用程序的退出代码.我正在监视的应用程序可能已在运行,因此我正在使用Process.GetProcessesByName检查它.如果它存在,我在调用WaitForExit后检查退出代码,但是当我这样做时,我得到...

我正在编写一个应用程序来检查另一个应用程序的退出代码.我正在监视的应用程序可能已在运行,因此我正在使用Process.GetProcessesByName检查它.如果它存在,我在调用WaitForExit后检查退出代码,但是当我这样做时,我得到一个异常:

“此过程未启动过程,因此无法确定所请求的信息.”

如果我启动进程(如果它还没有运行)那么它不会给我异常.

(Windows 8.1)

那么当我没有开始这个过程时,如何找出ExitCode是什么?我能想到的唯一选择是在退出时将输出代码写入文本文件并在…中读取它

解决方法:

System.Diagnostics.Process公开将EnableRaisingEvents设置为true后可以访问的事件:

    int processId = 0; // TODO: populate this variable
    var proc = System.Diagnostics.Process.GetProcessById(processId);
    proc.EnableRaisingEvents = true;
    proc.Exited += ProcessEnded;

事件处理程序

    private void ProcessEnded(object sender, EventArgs e)
    {
        var process = sender as Process;
        if (process != null)
        {
            var test = process.ExitCode;
        }
    }

变量测试现在包含退出代码.

在Windows 8.1上测试过

本文标题为:c# – 如何获取正在运行的进程的ExitCode

基础教程推荐