在.Net中列出和终止进程

时间:2009-08-08 09:17:15

标签: c# .net

如何列出和终止.Net应用程序中的现有流程?目标应用程序是1).Net应用程序,2)它们是相同可执行文件的实例3)它们具有唯一的ID但我不知道如何从它们获取这些信息,4)它们是从外部生成的(即我没有处理它们,因为我没有创建它们。)

我想列出所有进程,从中获取唯一ID并重新启动其中一些进程。我认为所有这些都是有响应的。

3 个答案:

答案 0 :(得分:2)

您可以使用Process.GetProcesses静态方法获取正在运行的进程列表。您可以轻松查询返回值(可能使用LINQ)来获取所需的值。

System.Diagnostics.Process.GetProcesses()

答案 1 :(得分:2)

Process.Kill();

检查这个以查找终止进程: http://www.dreamincode.net/code/snippet1543.htm

流程ID是流程的属性。例如:

Process.Id

此处列出了该流程中可用的所有方法: http://msdn.microsoft.com/en-us/library/system.diagnostics.process_methods.aspx

答案 2 :(得分:1)

我想引用您关于进程间通信的this question以及this tutorial。您可以使用WCF查询进程,并请求关闭。每个进程都需要它自己的命名管道。您可以在启动时根据进程ID(Process.GetCurrentProcess().Id)生成唯一名称。

尽管如此,所有这些对于一些简单的交流来说可能有点重要。使用Windows消息队列也可能是一个选项。您可以使用process.MainWindowHandle获取进程的窗口句柄并将自定义消息发送到应用程序的实例。见Messages and Message queues。如果您选择这样做,pinvoke可能会有所帮助。