1

構成されたアプリケーションがプロセスで実行されているかどうかを確認するために、c# で Windows サービス アプリケーションを作成しました。たとえば、OUTLOOK を構成し、Outlook が開いているか閉じているかをアプリケーション プロセス リストでチェックした場合、アプリケーションがプロセス リストで OUTLOOK を見つけられなかった場合、アプリケーションの OUTLOOK が閉じているかクラッシュしているというメールが届きます。

これをコードで実行しようとすると、OUTLOOK が閉じている場合にのみ電子メールが送信されますが、Service を使用して実行している場合は、OUTLOOK が実行されていても電子メールが送信されます。

私のサービスがアプリケーション プロセス リストのアプリケーションを認識できない理由を教えてください。

    public void GetListofApplications(List<string> applicationsInConfig)
    {
        if (AppsInActive.Count > 0)
        {
            AppsInActive.Clear();
        }
        StringBuilder sb = new StringBuilder();
        foreach (Process p in Process.GetProcesses("."))
            try
            {
                if (p.MainWindowTitle.Length > 0)
                {
                    APPsInProcess.Add(p.ProcessName.ToString());
                }
            }
            catch(Exception ex)
            {
                Logger.Log("Exception in Finding Process" + ex);
            }

        foreach (var application in applicationsInConfig)
        {
            if (APPsInProcess.Contains(application))
            {
                AppsActive.Add(application);
            }
            else
            {
                AppsInActive.Add(application);
            }
        }

        foreach (var item in AppsInActive)
        {
            Logger.Log("Following application is either crashed/closed :" + item);
        }

        Helper.EmailSetup setup = new Helper.EmailSetup();
        setup.ApplicationFailedEmailSetup(AppsInActive, DateTime.Now);
               }
4

1 に答える 1

1

この方法でOUTLOOKを確認してみてください

            var _proc = Process.GetProcesses().Where(o => o.ProcessName.Contains("OUTLOOK"));
            if (_proc.Count()>0)
            {
            }

最初は見通しだけを見つけてみてください。これが役に立たない場合は、コメントしてください

于 2012-05-04T13:20:36.983 に答える