2012-02-09 3 views
1

Visual Studio 2010 C# Закрытие запущенной программы из командной строки

Можно ли запустить и закрыть программу из командной строки? Мне нужно сделать что-то вроде этого:

myProgram.exe -start 
-- do something -- 
myProgram.exe -stop 

Я знаю, как реализовать первую часть (String [] арг в основном), но как я могу закрыть мою запущенную программу?


Редактировать

myprogram.exe обрабатывает некоторые UDP связи и должны быть выполнены в то время как вещи в - сделать что-то - выполняется. Извините за неточность.

+0

Если вы используете WinForms это может помочь: http://stackoverflow.com/questions/4547643/how-can-i-pass-command-line-arguments-to-an-already-running-process – Fox32

+0

Может ли у вас предоставить дополнительную информацию? – kbvishnu

+0

Трудно понять, что здесь задается: процесс «myProgram.exe» будет завершен (перестанет существовать) после завершения основной функции, то есть после завершения «-делать что-нибудь», нет необходимо извне убить его. Если это не то, что вы делаете, вам нужно уточнить свой вопрос. –

ответ

1

Я предполагаю, что вы знаете, как проверить аргументы командной строки и найти, была ли указана остановка? Следующее должно выполнить эту работу.

 var currentProcess = System.Diagnostics.Process.GetCurrentProcess(); 
     var matchingProcesses = System.Diagnostics.Process.GetProcesses().Where(x => x.Id != currentProcess.Id && x.ProcessName == currentProcess.ProcessName); 
     foreach (var process in matchingProcesses) { 
      process.Kill(); 
     } 
+0

Это отличный подход. Вместо того, чтобы убивать процесс, я собираюсь отправить сообщение этому процессу. – Hint

+0

, вы также можете использовать статику в приложении в виде грубой системы сообщений. т. е. killHasBeenSignalled = true, а затем проверить это в начальном состоянии. –

+0

Как получить доступ к статическому члену другой задачи? – Hint

0

Используйте программу командной строки, предназначенную для отключения процессов - pskill - одна из таких программ.

pskill myProgram.exe 

Встроенная утилита является taskkill:

taskkill /im myProgram.exe 
1

Можно ли использовать taskkill для подобных вещей.

т.е. если вы хотите, чтобы закрыть myprogram.exe, вы можете выполнить

taskkill /IM myProgram.exe 
+2

также расширяет эту строку с помощью '/ F', чтобы принудительно закрыть программу. – Pieter888

+0

Мне нужно сделать некоторые вещи при закрытии программы. Возможно ли зарегистрировать обратный вызов, который запускается каким-то закрывающим событием? – Hint

0
  • Получить идентификатор процесса по имени
  • убить процесс
0

Как Fox32 уже упоминалось в своем комментарии, вы должны действительно взять this approach, причина в этом случае ваше приложение действительно может само закрытие грациозно. Если вы просто заходите и используете taskkill и т. Д., Чтобы убить ваш процесс из внешнего мира, вы действительно можете столкнуться с проблемами в зависимости от ресурсов, которые вы используете (сеть, база данных, файлы и т. Д.).

Смежные вопросы