使用System.Diagnostic.Process.Start(“FileName”)启动Kill进程

时间:2010-10-02 20:05:30

标签: c# .net vb.net

我正在尝试创建一个将在特定时间执行操作的应用程序(非常类似于Windows任务计划程序)。我目前正在使用Process.Start()来启动任务所需的文件(或exe)。

我通过调用文件(.mp3)启动进程,并且该进程启动WMP(因为它是默认应用程序)。到现在为止还挺好。现在我要杀死那个过程。我知道在这种情况下,Process.Start(string,string)返回任何内容(在C#中为null)是正常的行为。

所以我问我在通过Process.Start(字符串,字符串)调用它时如何关闭WMP?

编辑:

请注意,我没有直接使用Process.Start()打开WMP,这是我运行该过程的行:

VB:Me._procs.Add(Process.Start(Me._procInfo))

C#:this._procs.Add(Process.Start(this._procInfo))

_procInfo是一个ProcessStartInfo实例。 _procInfo.FileName是“C:\ route \ myFile.mp3”。这就是WMP开放的原因。在任何情况下,除了返回布尔值的instance-one之外的所有Start()方法都不返回任何内容(C#中为null),因为WMP不是直接创建的进程(请注意WMP运行并且歌确实发挥。)

6 个答案:

答案 0 :(得分:19)

Process.Start(string,string)返回一个Process资源,您可以使用它来进一步控制新进程。

Process newProcess = Process.Start("param1", "param2");
if (newProcess != null && !newProcess.HasExited)
  newProcess.Kill();

如果使用Process.Start(string)或任何其他静态Process.Start重载,则相同的结构可用。

Process.Start()是一个成员函数,它将新的或重用的Process与由此标识的Process组件相关联。此方法的行为取决于this标识的流程的属性。

答案 1 :(得分:8)

不要这样做。

目前尚不清楚您的计划的目的是“始终使用Windows Media Player启动”还是“使用注册的MP3播放器启动”,这可能是iTunes。

如果您需要WMP,请使用Process.Start以及Windows Media Player的完整路径。

如果您需要注册的MP3播放器,可以使用the code shown here找到正确的exe文件。再次,使用此exe路径启动该过程,将MP3作为参数传递。

答案 2 :(得分:5)

两种方式:

1-

Process customProc = Process.Start("ExecutablePath", "Argument(s)");  
customProc.Kill()

2-

Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("ProcessName")  
For Each p As Process In pProcess
p.Kill()
Next

答案 3 :(得分:3)

如果您让注册的Windows程序打开文件,而不是选择您想要的程序。然后我建议你不要杀死这个过程。

原因就是说你的程序确实使用了默认应用程序,但该应用程序已经在使用,并且包含未保存的数据。用户不满意您的程序使用新文件超过应用程序,然后终止用户已用于其他目的的进程。当然,它可能没有被使用,但你必须考虑最坏的情况。

因此,我建议所建议的内容。使用Process.Start(),其中包含要使用的程序的完整路径和要打开的文件。

答案 4 :(得分:2)

我试图打开.txt文件并返回我的文本编辑器的过程,我也尝试了WMP的.mp3并返回null。所以这取决于应用程序。你需要用WMP运行mp3吗?如果没有,您肯定可以创建将返回Process对象的应用程序。

答案 5 :(得分:1)

proc = Process.Start(filename)应该有效,但就像你说的那样,它会返回null而不是进程。

这似乎是Windows Media Player固有的。其他应用程序返回该过程。您可以通过在start方法中指定应用程序来获取Windows Media Player的过程。

proc = Process.Start("C:\Program Files\Windows Media Player\wmplayer.exe", filename)

然后你可以正常杀死它。

proc.Kill()

您可能需要从注册表中获取与.mp3文件关联的应用程序的位置。