2009-09-09 76 views
6

我想通过vb.net使用完整文件路径来终止应用程序,但我在Process下找不到它。我希望有一个简单的Process.Stop(filepath),就像Process.Start一样,但没有这样的运气。使用vb.net中的文件路径以编程方式终止应用程序

我该怎么做?

+0

为什么我会认真对待一个人,他的个人资料显示他来自Antartica,并且正在制作一款即将可以购买的MMORPG。顺便说一句,你不会通过他们的文件路径终止应用程序。而是使用通常是可执行文件名称的进程名称。 – 2009-09-09 21:31:09

+0

南极的东西是一个笑话,MMORPG不是出售,我的最新作品(软件,与mmo无关)将尽快出售。为什么我应该认真对待一个不能开个小笑话的人?我知道你不会通过他们的文件路径终止应用程序,但我正在问如何去做。 – Cyclone 2009-09-09 21:37:04

回答

2

您必须查看每个进程的Modules属性,然后依次查看所需路径的文件名。

下面是一个例子:

VB.NET

Dim path As String = "C:\Program Files\Ultrapico\Expresso\Expresso.exe" 
    Dim matchingProcesses = New List(Of Process) 

    For Each process As Process In process.GetProcesses() 
     For Each m As ProcessModule In process.Modules 
      If String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) = 0 Then 
       matchingProcesses.Add(process) 
       Exit For 
      End If 
     Next 
    Next 

    For Each p As Process In matchingProcesses 
     p.Kill() 
    Next 

C#

string path = @"C:\Program Files\Ultrapico\Expresso\Expresso.exe"; 
var matchingProcesses = new List<Process>(); 
foreach (Process process in Process.GetProcesses()) 
{ 
    foreach (ProcessModule m in process.Modules) 
    { 
     if (String.Compare(m.FileName, path, StringComparison.InvariantCultureIgnoreCase) == 0) 
     { 
      matchingProcesses.Add(process); 
      break; 
     } 
    } 
} 

matchingProcesses.ForEach(p => p.Kill()); 

编辑:更新代码,以区分大小写考虑字符串比较。

+0

我的应用程序在vb.net中,我认为你的例子是在c#中。我在c#中不太流利,所以我不能移植它。 – Cyclone 2009-09-09 21:53:13

+0

在我的文章中添加了vb.net代码。 – 2009-09-09 22:06:36

+0

这应该工作,谢谢! – Cyclone 2009-09-09 22:11:18

2

尝试

System.Diagnostics.Process.GetProcessesByName(nameOfExeFile)。首先()。杀()

这忽略了文件的路径。

+0

有没有办法做到* *路径虽然?或者,有没有办法从文件路径中找出文件的名称? – Cyclone 2009-09-09 21:30:47

相关问题