Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание и работа с процессами 
:(
    Опции темы
Legolas
Дата 3.10.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



добрый вечер, 
возник вопрос: задача - отследить процесс по ID, если таковой процесс не запущен, то запустить.

юзаю данный код:
Код

Process pro = Process.GetProcessbyId(1234);   <-------------- в данной строчке возникает ошибка (ArgumentException: Процесс с таким ID не запущен)
try
   {
         if (pro == null)
            {
                  Process.Start("sgdsfgdfgdfg.exe");
            }  
   }
catch (ArgumentException)
  {  

  }


Возникает вопрос - почему компилятор указывает ошибку - ведь по-моему если он не запущен, то следуя коду его надо запустить! Подскажите как избежать ошибки.

Спасибо.

Это сообщение отредактировал(а) Legolas - 3.10.2007, 18:27
PM MAIL   Вверх
Aldan
Дата 3.10.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2007
Где: Минск, Беларусь

Репутация: нет
Всего: нет



Так компилятора ошибка или времени выполнения? Если времени выполнения, то все правильно, по документации метода, он кидает ArgumentException "The process specified by the processId parameter is not running. The identifier might be expired." если такой процесс не запущен.
 
Код

Process pro = Process.GetProcessbyId(1234);   <-------------- в данной строчке возникает ошибка (ArgumentException: Процесс с таким ID не запущен)
try
   {
         if (pro == null)
            {
                  Process.Start("sgdsfgdfgdfg.exe");
            }  
   }
catch (ArgumentException)
  {  
  }


Меняй на

Код

Process pro;
try
{
     pro = Process.GetProcessbyId(1234);
}
catch (ArgumentException)
{
    pro = Process.Start("sgdsfgdfgdfg.exe");
}


Хотя, по-хорошему, надо было бы проверять и Process.Start на эксепшны, но лень smile


Если же ошибка компилятора, приведи пожалуйста ее.
PM MAIL   Вверх
Legolas
Дата 3.10.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



Aldan, спасибо. пробую.
PM MAIL   Вверх
Legolas
Дата 3.10.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



возник вопрос - а какой лучший способ отслеживать появление процесса? Id-номер у одного и того же процесса, запущенного из одного экзешника на разных компах одинаков?
PM MAIL   Вверх
tol05
Дата 3.10.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(Legolas @  3.10.2007,  20:29 Найти цитируемый пост)
Id-номер у одного и того же процесса, запущенного из одного экзешника на разных компах одинаков? 

конечно нет. При запуске процесса ОС присваивает ему ID для дальнейшей идентификации и управления процессом. Запусти и закрой блокнот несколько раз, посмотри его ID, зачем задавать такие вопросы?

Я бы советовал искать процесс по имени. По крайней мере, в WMI по моему так же ищется. 
Не знаю правда, как поступать, если на одной машине запущено несколько экземпляров процесса, но, в любом случае, по ID искать не нужно.


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Legolas
Дата 3.10.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



tol05, в том то вся и проблема - процесс замаскирован под системный, поэтому мне пришлось менять одну букву на русскую чтобы их различать. искал вот так: Process[] pro = Process.GetProcessesByName("asd");  smile 
PM MAIL   Вверх
Legolas
Дата 4.10.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



может кто подскажет самый надежный способ отслеживания процессов? даже если они идентичны.
PM MAIL   Вверх
mr.DUDA
Дата 5.10.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Используйте WMI (классы ManagementObjectSearcher и ManagementObject), с wmi-шным объектом Win32_Process. Примеры как использовать WMI есть на форуме.


--------------------
user posted image
PM MAIL WWW   Вверх
Legolas
Дата 5.10.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 14.2.2007

Репутация: 2
Всего: 5



спасибо - щас буду разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.