我在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);
}
答案 0 :(得分:1)
尝试以这种方式检查OUTLOOK
var _proc = Process.GetProcesses().Where(o => o.ProcessName.Contains("OUTLOOK"));
if (_proc.Count()>0)
{
}
首先尝试只找到展望,如果这没有帮助,请评论