【问题标题】:Getting a pid of a process created in C#获取在 C# 中创建的进程的 pid
【发布时间】:2011-02-02 03:40:00
【问题描述】:

假设我正在尝试使用以下代码创建一个新进程:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
p.StartInfo.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\AwesomeFile.exe";
p.StartInfo.Arguments = "parameter1 parameter2";
p.StartInfo.CreateNoWindow = true;
p.Start();

在下一行,我将尝试使用以下行获取该进程的 pid:

MessageBox.Show(p.Id);

这行告诉我“没有进程与这个对象相关联”。错误。知道为什么会发生此错误吗?

【问题讨论】:

    标签: c# process pid


    【解决方案1】:

    检查Process.Start的返回值。在某些情况下,Process.Start 可以返回 false,在这种情况下,不会有任何 Id 与之关联。

    【讨论】:

      【解决方案2】:

      这样做 System.Diagnostics.Process.GetProcessesByName("processname")[0].Id。

      【讨论】:

      • 感谢您的回复。有没有办法识别同名的不同进程?假设我有两个 iexplore 进程正在运行,它们最初都是使用不同的 url 作为参数执行的。我怎么知道数组中哪个是哪个?
      • 我注意到这个命令: System.Diagnostics.Process.GetProcessesByName("processname")[0].StartInfo 其中包括参数参数,这很好,但它在文件上是空的不是由 C# 执行的。有什么办法可以解决吗?
      猜你喜欢
      • 2014-03-09
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2010-09-22
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多