【问题标题】:How can I keep a handle on System.Diagnostics.Process.start?如何掌握 System.Diagnostics.Process.start?
【发布时间】:2015-10-27 22:39:00
【问题描述】:

我通过

打开了一个资源管理器实例
System.Diagnostics.Process.Start("explorer.exe", @<path>); 

但是,我也想在给定时间关闭这个确切的进程。

到目前为止我已经试过了:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.Start("explorer.exe", @<path>);

但是,这似乎根本不起作用。这就是我尝试这种方式时得到的结果:

“不能通过实例引用访问成员'';改为使用类型名称对其进行限定”

我很确定这很简单,但我无法绕过它......

有什么帮助吗?

【问题讨论】:

  • 检查进程是否存在然后终止它:stackoverflow.com/questions/3345363/…,at a given time 取决于你如何实现它!
  • 如果你的意思是停止进程,只需使用 proc.Kill
  • 是的,但我什至无法让 proc.Start 开始工作。我收到此错误消息:“无法使用实例引用访问成员 '';改为使用类型名称对其进行限定”
  • 该错误清楚地表明您不应该创建 Process 的引用来调用 start 方法。使用 Type (System.Diagnostic) 调用 start 方法,该方法将返回 Process,然后您可以执行类似 proc.Kill() 的操作

标签: c#


【解决方案1】:

System.Diagnostics.Process.Start 返回Process

var proc = System.Diagnostics.Process.Start("explorer.exe", @<path>); 
proc.Kill();

【讨论】:

    【解决方案2】:

    使用ProcessStartInfo 创建Process:

    ProcessStartInfo psi = new ProcessStartInfo("explorer.exe", @"C:\some.file");
    Process p = Process.Start(psi);
    
    ///
    
    p.Kill();
    

    如果需要,请在进程上调用Kill。

    【讨论】:

    • 谢谢,正是我想要的!
    【解决方案3】:

    您遇到的问题是 Process.Start() 方法是 static 方法,不需要调用 Process 类的实例。

    正如其他人所说,Start() 返回一个 Process 对象,然后您可以使用该对象并可以在稍后的某个时间调用 Kill()。

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 2011-05-27
      • 2011-03-21
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      相关资源
      最近更新 更多