Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果特定应用程序打开和关闭,我如何触发启动windows service应用程序?_C#_.net_Windows Services - Fatal编程技术网

C# 如果特定应用程序打开和关闭,我如何触发启动windows service应用程序?

C# 如果特定应用程序打开和关闭,我如何触发启动windows service应用程序?,c#,.net,windows-services,C#,.net,Windows Services,示例:Skype将是触发我的服务的应用程序,如果Skype打开,我的服务将启动。如果skype关闭,则我的服务应关闭。可能吗 我想将状态放在我的事件日志中,以检查它是否确实可以使用以下内容: protected override void OnStart(string[] args) { galaxyeventLog.WriteEntry("Skype Start"); } protected override void OnStop() {

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

我想将状态放在我的事件日志中,以检查它是否确实可以使用以下内容:

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

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

简单解决方案的问题在于,他们将要求服务已经运行

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

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

Process[] processlist = Process.GetProcesses();
System.Diagnostics名称空间


希望这对你有所帮助。=)

以下是你的方法

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

  • 使用它,您可以连接到启动和停止skype进程事件,使用下面的代码启动/停止您的服务

    ServiceController=新的ServiceController(serviceName); if(controller.Status==ServiceControllerStatus.Stopped) controller.Start()