2

示例:Skype 将是触发我的服务的应用程序,如果 Skype 打开,那么我的服务应该启动。如果Skype关闭,那么我的服务应该关闭。那可能吗?

我想将状态放入我的 eventLog 以检查它是否确实可以使用以下内容:

protected override void OnStart(string[] args)
    {
        galaxyeventLog.WriteEntry("Skype Start");
    }

    protected override void OnStop()
    {
        galaxyeventLog.WriteEntry("Skype Stop");
    }
4

2 回答 2

2

这是你如何做到的

  1. 您需要开发一个 SkypeMonitor 服务(第三个服务应用程序)。它的工作是跟踪 Skype 进程。这可以使用 WMI 接口来完成。示例代码可以在

    .NET 进程监视器

  2. 使用它,您可以使用下面的代码挂钩启动和停止 Skype 进程事件以启动/停止您的服务

    服务控制器控制器 = 新服务控制器(服务名称);if (controller.Status==ServiceControllerStatus.Stopped) controller.Start();

于 2012-10-24T02:31:07.620 回答
1

简单解决方案的问题在于它们需要服务已经在运行

但是,您可以做的是,当您在列表中看不到 Skype 时禁用所有服务行为,并在您实际看到它时启用它。

为此,您应该使用以下方法定期检查打开的进程:

Process[] processlist = Process.GetProcesses();

System.Diagnostics;命名空间。

希望这会有所帮助=)

于 2012-10-24T02:11:59.183 回答