Открытие консольного приложения Windows в новом окне с помощью сочетания клавиш

344
fuglede

Если я создаю ярлык Windows 8 для консольного приложения и задаю клавишу быстрого доступа (см. Снимок экрана ниже), то использование этого ярлыка, когда приложение уже открыто, больше не будет открывать приложение, а скорее переключит фокус на окно, содержащее запущенный приложение.

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

Итак, есть ли способ заставить сочетания клавиш для консольного приложения всегда открывать новое приложение?

Решения этого вопроса StackOverflow, по- видимому, предполагают, что использование start cmd /cдля запуска соответствующего приложения может быть полезным, но, похоже, это не работает в случае ярлыков.

enter image description here

1
Вполне возможно, что сочетание клавиш перехватывается вашим консольным приложением и используется там вместо этого. Попробуйте нажать на панели задач или в любом другом месте за пределами приложения и затем нажмите клавишу быстрого доступа для подтверждения. Также попробуйте изменить сочетание клавиш на что-то еще, чтобы подтвердить. LPChip 6 лет назад 1
@LPChip: спасибо за комментарий. Попытка изменить фокус на другое приложение, и эффект ярлыка всегда становится для фокусировки на консольном приложении; если, например, приложение свернуто, то нажатие клавиши быстрого доступа восстановит окно. Я попытался с несколькими другими сочетаниями клавиш, такими как CTRL + ALT + æ и CTRL + ALT + TREMA, что дает такое же поведение. fuglede 6 лет назад 0
Изменение ярлыка на .bat, вызывающее `start C: \ ... \ sh.exe`, создает новое окно для каждого вызова, но в итоге порождает новую консоль по умолчанию, что не является желаемым поведением. fuglede 6 лет назад 0
Вам действительно нужна комбинация клавиш? Если нет, попробуйте этот метод: после загрузки приложения удерживайте клавишу Shift и щелкните приложение на панели задач. Возможно, вам придется сначала прикрепить приложение к панели задач. LPChip 6 лет назад 0
Да, идея заключается в том, чтобы поддерживать рабочий процесс только с клавиатуры. Второе лучшее решение, которое я мог бы придумать, это добавить приложение в PATH и запускать его только с помощью Win + R -> name. Тем не менее, так как это работает для неконсольных приложений, я бы предположил, что это как-то также возможно в этом случае. fuglede 6 лет назад 0

1 ответ на вопрос

1
Maximus

использование этого ярлыка, когда приложение уже открыто, больше не откроет приложение, а переключит фокус на окно, содержащее запущенное приложение.

Когда вы устанавливаете горячую клавишу в свойствах ярлыка, Windows применяет эту горячую клавишу к окну ( WM_SETHOTKEY ), которое создает приложение. Конечно, это ведет к наблюдаемому поведению. Если приложение уже запущено - ярлык обрабатывается «окном приложения», а запущенный экземпляр просто фокусируется. Но при двойном нажатии на ярлык - Windows не обрабатывает горячие клавиши.

С другой стороны, для неконсольных приложений нажатие клавиш быстрого вызова откроет новое окно, даже если оно уже открыто.

Это потому, что эти приложения игнорируют сообщение WM_SETHOTKEY . И это может рассматриваться как ошибка этих приложений.

Использование start cmd /c ...для запуска соответствующего приложения может быть полезным, но это не похоже на работу в случае ярлыков.

Это самое простое решение. Почему тебе не нравится это?

Вы можете запустить оболочку как

start "your bash" cmd /c sh.exe" 

И настроить цвета через свойства окна консоли (не ярлык). После этого цвета будут применяться к новым экземплярам.

Или вы можете попробовать ConEmu. Есть много вариантов, например, функция терминала по умолчанию .

Благодарю. Что касается решения `start`, я не фанат, потому что оно создает новое окно без каких-либо других настроек (размер буфера, цвета, ...), которые задаются как часть ярлыка. Есть ли способ сохранить их? fuglede 6 лет назад 0
Ответ обновлен. Maximus 6 лет назад 0
На что здесь ссылается «ваш bash» (отмечая, что запуск `sh` соответствует запуску bash как оболочки без входа в систему)? fuglede 6 лет назад 0
Это просто ваше предпочтительное имя консоли, под этим «именем» будут храниться ваши цвета. Maximus 6 лет назад 0
Ах, умный! * Немного * раздражает, что он создает и сразу же убивает другое окно, но все равно побеждает все альтернативы. fuglede 6 лет назад 0
Если вы установите «Run minimized» в свойствах ярлыка, мигание не будет Maximus 6 лет назад 0
Это правда, отлично! fuglede 6 лет назад 0