5

我需要编写一个监控/看门狗程序来检查一系列应用程序

监控程序应该能够

  1. 确定它正在监视的应用程序是否挂起或没有响应
  2. 如果挂起,请重新启动特定应用程序

VB.NET 中的哪种 API 可以帮助我实现这一目标?

任何代码示例都会非常有帮助

4

2 回答 2

5

您可以使用 System.Diagnostics.Process 来启动/查找您正在观看的进程。根据您正在观看的应用程序,您可以使用以下内容:

For Each proc As Process In System.Diagnostics.Process.GetProcesses
  If proc.ProcessName = "notepad" Then
    If proc.Responding = False Then
      ' attempt to kill the process
      proc.Kill()

      ' try to start it again
      System.Diagnostics.Process.Start(proc.StartInfo)
    End If
  End If
Next

确定应用程序是否“挂起”并不总是很清楚。它可能只是忙于做某事。Process.Responding 也需要一个 MainWindow。

这是一个非常简单的例子,但我希望它能为您指明正确的方向。

于 2012-03-22T06:54:52.033 回答
1

Roland Bär 于 2004 年在 codeproject.com 上发表了一篇很好的文章,描述了为什么以及如何做到这一点:

http://www.codeproject.com/Articles/8349/Observing-Applications-via-Heartbeat

于 2012-05-15T06:43:29.503 回答