2

我的程序的一部分是关闭另一个程序或具有相同名称的相同程序...我查找了如何执行此操作并得到以下代码:

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 ^^^^

4

2 回答 2

2

显然你声明了myprocesses()but null,所以要完成你的任务,你必须使用GetProcessesByName

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

但这是管理流程的正确方法。.exe

于 2013-01-27T21:47:56.690 回答
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
于 2013-01-27T21:55:48.133 回答