Могу ли я отправить Ctrl-C (SIGINT) приложению в Windows? - PullRequest
80 голосов
/ 02 мая 2009

У меня есть (в прошлом) написанные кроссплатформенные (Windows / Unix) приложения, которые при запуске из командной строки обрабатывали пользовательскую комбинацию Ctrl - C таким же образом (то есть, чтобы завершить приложение чисто).

Возможно ли в Windows отправить Ctrl - C / SIGINT / эквивалентному процессу из другого (не связанного) процесса, чтобы запросить его чистое завершение (предоставив ему возможность убирать ресурсы и т. д.)?

Ответы [ 13 ]

1 голос
/ 03 февраля 2017

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

Список всех процессов:

C:\>tasklist

Чтобы убить процесс:

C:\>Taskkill /IM firefox.exe /F
or
C:\>Taskkill /PID 26356 /F

подробности:

http://tweaks.com/windows/39559/kill-processes-from-command-prompt/

1 голос
/ 22 января 2015

Мой друг предложил совершенно другой способ решения проблемы, и это сработало для меня. Используйте VBScript, как показано ниже. Запускается и приложение, дайте ему поработать 7 секунд и закройте его, используя ctrl + c .

'VBScript Пример

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "notepad.exe"

WshShell.AppActivate "notepad"

WScript.Sleep 7000

WshShell.SendKeys "^C"
1 голос
/ 11 февраля 2014

Я нашел все это слишком сложным и использовал SendKeys , чтобы отправить CTRL - C нажатие клавиши в окно командной строки (т.е. окно cmd.exe) Обходной путь.

...