关闭具有相同名称的多个程序

时间:2013-01-27 21:36:08

标签: vb.net winforms process

我的程序的一部分是关闭另一个程序或同名程序...我查找了如何执行此操作并获得此代码:

Dim myprocesses() As Process
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  For Each p As Process In myprocesses
    If p.MainWindowTitle.Contains("notepad") Then
      p.CloseMainWindow()
    End If
  Next
End Sub

它应该可以工作,但是当我运行它时,我在Next声明中收到一条错误消息:

  

{“对象引用未设置为对象的实例。”}

有谁知道上面的代码有什么问题?

更新:其中一些答案似乎有效:)谢谢。然而,有一个小问题,因为有时程序直到大约30秒才加载(记事本只是为了简单而放在那里)所以我需要代码来关闭PROCESS而不是加载时的实际程序。

希望你能理解xD ^^^^

2 个答案:

答案 0 :(得分:2)

显然你宣布了myprocesses()null,所以为了完成你的任务,你必须使用GetProcessesByName

For Each process1 As Object In Process.GetProcessesByName("Notepad")
    process1.Kill()
Next

但这是管理.exe process正确方式。

答案 1 :(得分:1)

在按钮点击事件中尝试以下代码:

Dim myProc As System.Diagnostics.Process
For Each myProc In System.Diagnostics.Process.GetProcesses
  Console.WriteLine(myProc.MainWindowTitle)
  If myProc.MainWindowTitle.ToUpper.Contains("NOTEPAD") Then
    myProc.CloseMainWindow()
  End If
Next