如何列出和终止.Net应用程序中的现有流程?目标应用程序是1).Net应用程序,2)它们是相同可执行文件的实例3)它们具有唯一的ID但我不知道如何从它们获取这些信息,4)它们是从外部生成的(即我没有处理它们,因为我没有创建它们。)
我想列出所有进程,从中获取唯一ID并重新启动其中一些进程。我认为所有这些都是有响应的。
答案 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可能会有所帮助。