Сейчас я использую Process.Kill(), чтобы убить процесс. Есть ли способ, но вместо того, чтобы просто убить его немедленно, я могу отправить сообщение в процесс, инструктирующее его закрыть, чтобы он мог изящно очистить и закрыть. В принципе, я ищу равного, просто щелкнув красный X в верхнем правом углу, который, я считаю, отправляет сообщение в приложение, требующее закрытия.
"Изящно" убивает процесс
Ответ 1
Если процесс имеет интерфейс Windows (как вы относитесь к красному "X" ), вы можете попробовать Process.CloseMainWindow()
. Если это не удается, вы можете вернуться к Process.Kill()
.
Ответ 2
Убийство не может быть изящным, возможно, вы можете сигнализировать о процессе совершения самоубийства. Для сигнализации у вас есть много вариантов.
- SendMessage
- NamedPipes
- Именованный Mutex
- Розетки
Ответ 3
Это будет зависеть от процесса, который вы убиваете. Как указано на соответствующей странице Process.Kill
, "Kill - единственный способ прекратить процессы, которые не имеют графических интерфейсов". Если есть графическое окно, тогда перейдите с ответом на lc выше; Process.CloseMainWindow
функционирует как красный X, о котором вы говорили.