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

1

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

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

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

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

введите описание изображения здесь

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

Ответы:

1

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

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

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

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

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

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

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

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

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

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

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