Если я создаю ярлык Windows 8 для консольного приложения и задаю клавишу быстрого доступа (см. Снимок экрана ниже), то использование этого ярлыка, когда приложение уже открыто, больше не будет открывать приложение, а скорее переключит фокус на окно, содержащее запущенный применение.
Это поведение отличается от того, что происходит, если я просто открываю ярлык, не нажимая клавиши быстрого доступа, и в этом случае открывается новое приложение. С другой стороны, для неконсольных приложений нажатие клавиш быстрого вызова откроет новое окно, даже если оно уже открыто.
Итак, есть ли способ сделать так, чтобы сочетания клавиш для консольного приложения всегда открывали новое приложение?
Решения этого вопроса StackOverflow, по- видимому, предполагают, что использование start cmd /c
для запуска соответствующего приложения может быть полезным, но, похоже, это не работает в случае ярлыков.
start C:\...\sh.exe
создает новое окно для каждого вызова, но в конечном итоге порождает новую консоль по умолчанию, что не является желаемым поведением.Ответы:
Когда вы устанавливаете горячую клавишу в свойствах ярлыка, Windows применяет эту горячую клавишу к окну ( WM_SETHOTKEY ), которое создает приложение. Конечно, это ведет к наблюдаемому поведению. Если приложение уже запущено - ярлык обрабатывается «окном приложения», а запущенный экземпляр просто фокусируется. Но при двойном нажатии на ярлык - Windows не обрабатывает горячие клавиши.
Это потому, что эти приложения игнорируют сообщение WM_SETHOTKEY . И это может рассматриваться как ошибка этих приложений.
Это самое простое решение. Почему тебе не нравится это?
Вы можете запустить оболочку как
И настроить цвета через свойства окна консоли (не ярлык). После этого цвета будут применяться к новым экземплярам.
Или вы можете попробовать ConEmu. Есть много вариантов, например, функция терминала по умолчанию .
источник
start
решения, я не фанат, потому что оно создает новое окно без каких-либо других настроек (размер буфера, цвета, ...), которые задаются как часть ярлыка. Есть ли способ сохранить их?sh
соответствует запуску bash в качестве оболочки без входа в систему)?