Имя: Пароль:
JOB
Работа
[С#] Вопрос про состояние процесса
,
0 Steel_Wheel
 
13.10.11
22:34
Есть консольное приложение, я создаю в нем процесс, затем подсасываюсь процессом к оконному приложению.

Если я нажму на крестик окошка, то процесс будет IsActive, и будет ли доступен метод Kill()?
1 Steel_Wheel
 
13.10.11
22:35
Есть свое мнение, но хотю услышать глас профессионалов
2 Steel_Wheel
 
13.10.11
22:51
Нашел свойство HasExited
3 filh
 
13.10.11
22:53
ищи еще.
4 Steel_Wheel
 
13.10.11
23:33
(3) А ты что посоветуешь?
5 Steel_Wheel
 
14.10.11
09:54
Обожду, может кто и посоветует, как проверить сабж правильно
6 Steel_Wheel
 
14.10.11
13:23
^up
7 Ненавижу 1С
 
гуру
14.10.11
13:25
"я создаю в нем процесс, затем подсасываюсь процессом к оконному приложению"
более подробно
8 Steel_Wheel
 
14.10.11
13:31
(7) Пишу по памяти: код дома
System.Diagnostics.Process MyProc = new System.Diagnostics.Process();
MyProc.StartInfo.FileName = "C:\My.exe";
MyProc.Start();
9 IVIuXa
 
14.10.11
15:40
(0)
крестик окошка и метод Kill() не один хрен ?
10 Steel_Wheel
 
14.10.11
15:44
(9) Это CloseMainWindow() для оконных приложений, но тут могут мешать подтверждение завершения работы. Есть еще Dispose(), но я не уверен, что его правильно использовать в этом случае. Остановился пока на Kill()..

Цель вопроса была: как не сделать Kill() процессу, который был закрыт по крестику?

Пока условие такое:
if (!MyProc.HasExited) Kill();
11 IVIuXa
 
14.10.11
15:45
(10)
ты объясни нормально что ты хочешь вообще ?
12 IVIuXa
 
14.10.11
15:47
(10)
понял
13 Steel_Wheel
 
14.10.11
15:48
(11) Консольное приложение открывает win-приложение. Затем взаимодействует с формой, затем его закрывает. Есть вероятность, что в процесс влезет юзер и закроет окошко крестиком (отыщет в дереве процессов и удалит его оттуда). Как корректно проверить это win-приложение на открытость и закрыть его программно?
14 Steel_Wheel
 
14.10.11
15:49
У меня конструктор класса в (8), деструктор в (10)
15 izekia
 
14.10.11
15:58
(0) мне кажется ты из одного процесса не можешь управлять диалогом другого процесса, килл сделать можешь ... сорри что криво выразился, не помню как это точно формулируется
16 IVIuXa
 
14.10.11
16:01
попробуй так

if(MyProc.ProcessName.Contains("My.exe"))Kill();
или
if (MyProc!=null) Kill();
17 IVIuXa
 
14.10.11
16:16
да и вообще может крестик убрать ?
18 Steel_Wheel
 
14.10.11
16:16
(15) Управлять можно. Есть библиотеки, позволяющие это делать.
(16) Сам процесс не становится null при закрытии.
Этот код фактически работает
if (!MyProc.HasExited) Kill();

Но хотел уточнить, может правильнее
if (!MyProc.Disposed) MyProc.Dispose();?
19 Steel_Wheel
 
14.10.11
16:17
(17) win-приложение не мое )
20 IVIuXa
 
14.10.11
16:44
21 Steel_Wheel
 
14.10.11
16:58
(20) Дома гляну, спасибо