@Morphine43
Техник АСУП

Как мониторить программно состояние какого-либо приложения в ОС Windows?

В ОС Windows в диспетчере задач на вкладке "Приложения" мы можем видеть статус приложения (Работает/Не отвечает). Каким образом мы можем программно мониторить это состояние?
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
@Morphine43 Автор вопроса
Техник АСУП
ProcessStartInfo psiOpt = new ProcessStartInfo(@"cmd.exe", @"/C tasklist /fi ""imagename eq notepad*"" /fi ""status eq not responding"" ");
psiOpt.WindowStyle = ProcessWindowStyle.Hidden;
psiOpt.StandardOutputEncoding = Encoding.GetEncoding(866);
psiOpt.RedirectStandardOutput = true;
psiOpt.UseShellExecute = false;
psiOpt.CreateNoWindow = true;
Process procCommand = Process.Start(psiOpt);
StreamReader srIncoming = procCommand.StandardOutput;
label1.Text = srIncoming.ReadToEnd().ToString();
procCommand.Close();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmfun
Не уверен, но можно попробовать по очереди сообщений. Диспетчер задач получает очередь приложений по перерисовке и смотрит как быстро они оттуда исчезают. Если приложение не GUI, то вряд ли как-то удастся отследить. Такое приложение может работать в фоне, ждать события, может отвечать на команды посланные через сокет и многое другое (никакие события ОС не посылает). А вот если GUI, то не перерисовывающиеся окна можно как то отловить. Либо через GUI через сообщения какую-то инфу пытается прочитать.

Вообще лучше изучить структуру приложения и понять, какие файлы и как оно расходует память при работе.
Если память не расходуется или не пишутся сообщения в файл, то такое приложение могло подвиснуть...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы