3

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

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

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

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

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

1 ответ1

2

Там нет настроек, о которых я знаю, но вы можете сделать это с помощью скрипта AutoHotkey .

Сценарий

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

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

  • ^c указывает комбинацию клавиш для изменения: Ctrl + C (^ указывает Ctrl).

  • WinGetClass, WinClass, A хранит заголовок активного окна в переменной WinClass .

  • if(WinClass = "ConsoleWindowClass") ... else ... проверяет, содержит ли WinClass строку ConsoleWindowClass (класс окна командной строки Windows 7).

    • Если это так, SendPlay ^{CtrlBreak} имитирует комбинацию клавиш Ctrl + Break .

    • В противном случае SendPlay ^c имитирует комбинацию клавиш Ctrl + C.

      Таким образом, другие программы по-прежнему ведут себя как следует.

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

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

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

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

  4. При желании скопируйте скрипт (или ссылку на него) в папку « Startup ».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .