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 回答