2

例: 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 サービス (3 番目のサービス アプリケーション) を開発する必要があります。その仕事は、Skype プロセスを追跡することです。これは、WMI インターフェイスを使用して実行できます。サンプル コードは次の場所にあります。

    .NET プロセス モニター

  2. それを使用すると、Skypeプロセスの開始および停止イベントにフックして、以下のコードを使用してサービスを開始/停止できます

    ServiceController コントローラー = 新しい ServiceController(serviceName); if (controller.Status==ServiceControllerStatus.Stopped) controller.Start();

于 2012-10-24T02:31:07.620 に答える
1

簡単な解決策の問題点は、サービスが既に実行されている必要があることです。

ただし、リストにスカイプが表示されないときはすべてのサービス動作を無効にし、実際に表示されたら有効にすることができます。

これを行うには、次を使用して開いているプロセスを定期的に確認する必要があります。

Process[] processlist = Process.GetProcesses();

System.Diagnostics;名前空間の。

これが役立つことを願っています=)

于 2012-10-24T02:11:59.183 に答える