Можно ли сделать Ctrl+C таким же отзывчивым, как Ctrl+Break в консоли Windows 7?

Можно ли заставить Ctrl+C действовать как Ctrl+Break в Windows 7 cmd.exe приставка?

По умолчанию кажется, что Ctrl+C отправляет сигнал только при следующем чтении входного буфера, где Ctrl+Break немедленно отправляет сигнал.

Это делает Ctrl+C бесполезным для завершения процессов, потому что, когда я хочу завершить процесс, я хочу немедленно завершить его.

Я сейчас использую Ctrl+Break, но набрать его гораздо сложнее.

Похоже, в DOS вы можете добавить BREAK=ON в CONFIG.SYS добиться этого, но не в Windows 7?

1 ответ

Решение

There's no setting that I know of, but you can accomplish this with an AutoHotkey script.

Сценарий

^c::
    WinGetClass, WinClass, A
    if(WinClass = "ConsoleWindowClass")
        SendPlay ^{CtrlBreak}
    else
        SendPlay ^c

Как это устроено

  • ^c specifies the key combination to modify: Ctrl + C (^ indicates Ctrl).

  • WinGetClass, WinClass, A stores the active window's title in the variable WinClass,

  • if(WinClass = "ConsoleWindowClass") ... else ... проверяет, если WinClass macthes the string ConsoleWindowClass (the window class of the Windows 7 command prompt).

    • Если это так, SendPlay ^{CtrlBreak} simulates the key combination Ctrl + Break.

    • Иначе, SendPlay ^c simulates the key combination Ctrl + C.

      This way, other programs still behave as they should.

Как пользоваться

  1. Загрузите и установите последнюю версию AutoHotkey.

  2. Сохраните приведенный выше скрипт как break-on.ahk, используя ваш любимый текстовый редактор.

  3. Дважды щелкните файл, чтобы запустить скрипт.

  4. Если вы хотите, скопируйте скрипт (или ссылку на него) в Startup папка.

Другие вопросы по тегам