使用VB.NET(Compact Framework 2.0)检查进程是否正在运行

时间:2014-01-02 09:26:37

标签: vb.net process compact-framework

我正在开发一个(控制台)应用程序,该应用程序应该在启动时执行并始终在后台运行(每30分钟执行一次)。

如何在另一个(设备)应用程序中检查我的控制台应用程序是否正在运行(如果不是,则启动它)?
我正在使用VB.NET CF 2.0,一切都是部署在运行WM 6.5的设备上 我找到的所有代码示例只能在“标准”.NET上使用。

1 个答案:

答案 0 :(得分:1)

您的“监控”应用程序可以通过多种方式运行(当然还有我在此处列出的内容)。

  1. 使用命名的互斥锁(您必须进行P / Invoke)。受监控的应用程序将创建并保留它,监控应用程序将定期检查以确保它被保留。如果未保留,则受监控的应用程序将不再运行。
  2. 使用Toolhelp API。让监控应用程序使用Toolhelp API定期枚举正在运行的进程。如果受监控的应用程序不在进程列表中,则表示它未运行。
  3. 使用命名事件。受监控的应用程序将具有后台线程,该线程定期设置命名(监视程序)事件。监控应用程序将等待该事件,如果未能在特定时间内获取事件,则另一个应用程序未运行或已锁定。
  4. 使用套接字。让受监控的应用程序打开一个套接字并监听它。监视器应用程序将定期向受监视的应用程序发送“ping”。受监控的应用程序将使用ack响应ping。如果监控应用程序未获得确认,则受监控的应用程序未运行或已被锁定
  5. 使用窗口手柄。监视器应用程序定期P / Inv GetWindow FindWindow来查找受监控应用程序中始终存在的窗口 - 通常是通过表单文本。如果监控应用程序找不到Window,则受监控的应用程序不会运行。