Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   C# - Как отследить состояние процесса (http://forum.oszone.net/showthread.php?t=167369)

Flammable 15-02-2010 00:03 1347254

C# - Как отследить состояние процесса
 
Нужно проверить, запущен ли процесс и узнать его состояние - отвечает/не отвечает. Как реализовать такое на C# ?

Delirium 15-02-2010 02:24 1347304

Процесс сторонний или запущенный из под программы?
Почитайте это: http://www.gotdotnet.ru/forums/15/114038/538210/

В частности, вас должен заинтересовать вот такой код:

Код:

private void goToProcess()
{
Process[] processList;
processList = Process.GetProcessesByName("cmd");
foreach (Process myProcess in processList)
{
progressBar1.Style = ProgressBarStyle.Marquee; //Вместо этой строки можно сделать проверку свойств myProcess.
}
}

Для объявления Process Надо добавить директиву #using System.Diagnostics

Flammable 15-02-2010 08:21 1347369

Процесс сторонний. Причем возможно, что имя процесса, который нужно отслеживать, будет совпадать с именем другого процесса. Различаются они по описанию. Можно ли идентифицировать нужный процесс по имени и описанию?

Delirium 15-02-2010 09:14 1347392

Цитата:

Цитата Delirium
Process.GetProcessesByName("cmd"); »

Это уже идентификация процесса командной строки (cmd.exe). Не совсем понятно, что имеется в виду под описанием?

Если имеется в виду описание свойств(правой кнопкой на файле - свойства), то можно почитать здесь:
http://www.gotdotnet.ru/forums/2/76926/366479/
и здесь: http://otvety.google.ru/otvety/threa...768343d0014435

Путь до имени файла можно выковырять через вышеуказанный код и свойства MyProcess.

Flammable 15-02-2010 18:48 1347809

Цитата:

Цитата Delirium
Не совсем понятно, что имеется в виду под описанием? »

В диспетчере задач имеется колонка "Описание". По ней и нужно идентифицировать процесс.
Хотя есть и альтернативный вариант - идентифицировать процесс по пути к исполняемому файлу. Это возможно?
-----------
Попробую более очевидно описать задачу.
Есть 2 программы, размещенные в разных каталогах. Имена одинаковые, версии и описания разные.
К примеру,

C:\bin\app.exe //Описание: ConApp1
C:\bin2\app.exe //Описание: ConApp2

Обе программы запущены. C:\bin2\app.exe зависает (или перестает отвечать, как пишет Windows в заголовке окна). В этот момент нужно его завершить (C:\bin2\app.exe), не затронув первую программу (C:\bin\app.exe).

Delirium 16-02-2010 01:39 1348198

Цитата:

Цитата Flammable
Хотя есть и альтернативный вариант - идентифицировать процесс по пути к исполняемому файлу. Это возможно? »

http://www.cyberforum.ru/csharp-net/thread4966.html - здесь все описано подробно.

Flammable 16-02-2010 08:04 1348285

Delirium, спасибо, попробую.

unsektor 31-12-2010 11:55 1578289

Код:

private void goToProcess()
{
string ProcessName = "cmd";
SomeProcess = Process.GetProcessesByName(ProcessName);
if (SomeProcess.Length == 0){Console.WriteLine("{0} is offline", ProcessName);}else{Console.WriteLine("{0} is online", ProcessName);}
}

Попробуйте вот так.


Время: 21:10.

Время: 21:10.
© OSzone.net 2001-