Здравствуйте! Пользуясь командной строкой, я подзадолбался переключать каждый раз при ее запуске язык клавы на английский, подзадумался, полез в Гугл. Там копал, копал, так себе накопал, наткнулся на тему, где один голландец, что ли, задает похожий вопрос. Ему говорят, что что-то надо удалить (если у вас вообще есть этот файл) в папке System32 и тогда командная строка будет запускаться с английским языком ввода - Бинго!!! Но... оборотной стороной ентого всего дела является то, что и все сообщения самой командной строки начинают выводится тоже на английском - ваще на камильфо. Что же делать? Тогда я сообразил, что, с одной стороны, язык ввода
можно переключать без мышки, одной клавой. С другой стороны, я знал, что существует язык программирования, у которого в файлы для его интерпретатора (выполнителя этих файлов, написанных для этого выполнителя) можно написать команды, исполнение которых будет равносильно нажатию клавиш на клаве - класс! Язык этот - JScript. Не буду вас загружать подробностями, тем более, что я сам еще так себе в этом языке. Я так понял, что этот язык является частью другого языка и вот для этого более общего языка, какие-то системы младше винды7 не имеют его интерпретатора (не понимают его), но его на них можно установить, тырым-пырым, тудым-сюдым. Но на Семерку, слава Богу, ничего доустанавливать не надо, там все для этого есть. Короче, открываем Блокнот, вставляем туда следующий код:
cd /d %0\..
start 2.bat
это будет
1.bat. Файл 2.bat будет таким:
chcp 1251
cd C:\Users\ИВАН
cls
В этих файлах еще нет команды для переключения на английский. Эта команда, правда, не в явном виде, содержится в файле с расширением .js следующего содержания:
WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run("1.bat",0);
WScript.Sleep(500)
WshShell.AppActivate("cmd");
WshShell.SendKeys("%+");
Его изготавливают также, как и батник по приведенной мной выше ссылке, только в имени после последней точки нужно написать
js вместо bat. Лично я написал
cmd.exe.js. Файлы 1.bat и 2.bat
точно должны находиться в папке,
которая добавлена в PATH. Далее наводим мышкой на файл cmd.exe.js, нажимаем левую кнопку мышки и, не отпуская ее, тащим мышку на меню Старт, когда оно откроется, закрепляем в нем наш файл cmd.exe.js в удобной для вас позиции:

Как это все работает? Когда вы в меню старт нажимаете левой кнопкой мышки на cmd.exe.js, вы заставляете выполняться код, содержащийся в нем. Что написано в этом коде? Запустить файл 1.bat и ничего не делать 0,5с. Пока файл cmd.exe.js ничего не делает, действует файл 1.bat. А он что делает? Он запускает файл 2.bat и закрывается, при этом, т.к. никаких действий в окне этого батника не нужно производить, то я его сделал выполняющемся в фоновом режиме, черное окно, обычно появляющееся при выполнении файлов с кодами, при таком способе запуска в данном случае батника не появляется, для чего я и поставил в коде файла cmd.exe.js после "1.bat" через запятую 0. Файл же 2.bat, в отличии от 1.bat, после открытия сам не закрывается. Именно поэтому мне потребовалось использовать для решения озвученной в данном посте проблемы 2 файла .bat (2 батника). Файл же 2.bat сначала переключает кодировку окна, в котором выполняется, на windows-1251. Это нужно, потому что следующая команда - переход в папку
C:\Users\ИВАН - папку, в которой запускается командная строка при открытии ее традиционным образом, не файлом cmd.exe.js - содержит кириллические буквы и очищает окно выполнения файла 2.bat от отображения уже выполненных команд и отчетах об этих выполнениях. При желании перед cls в 2.bat можно добавить команду
chcp 866
тогда после очищения окно выполнения файла 2.bat кодировка этого окна станет такой же, как при запуске командной строки обычным способом, но я у себя не стал этого делать, т.к. при стандартной кодировке командной строки отсутствует возможность использования кириллических букв в путях. Далее после выполнения этих команд файлом 2.bat (0,5 секунд на это все хватает) в дело опять вступает файл cmd.exe.js. Он активизирует открытое последним (проверял экспериментом) окно командной строки, созданное файлом 2.bat и имитирует в нем нажатие сочетания клавиш
Alt+
Shift. В коде это место
.................................
WshShell.SendKeys("%+");
Вот эта часть кода и переключает раскладку клавиатуры. Она означает, что компу нужно сымитировать нажатие сочетания клавиш
Alt+
Shift. Фактически, если руками попробовать нажимать сочетание клавиш
Alt+
Shift, то переключение языка ввода на клаве не произойдет. Произойдет же оно только при вводе сочетания клавиш
Alt+
Shift+
Alt+
Shift+
Alt+
Shift перед последнем нажатием
Shift, а это последнее нажатие
Shift нужно для того, чтобы отжать находящуюся к тому времени нажатой клавишу
Shift (у меня включено
Залипание клавиш). Видимо, из-за включенного залипания клавиш мне и нужно нажимать руками такое длинное сочетание клавиш. Комп же, получается, выполняет это же нажатием всего лишь сочетания
Alt+
Shift. Вот в этом месте была заморочка. С одной стороны, я первоначально хотел использовать изначально имеющееся в винде7 сочетание клавиш для переключения клавы на английский язык -
Ctrl+
0. Но... Всегда есть "но". Выяснилось, что при указании в файлах .js клавиш, нажатие которых нужно сымитировать, символы с этих клавиш должны вводиться в файлы .js не при английской раскладки клавы, а при раскладке клавы такой же, как и язык системы, т.е., если бы язык моей системы был бы
Русский, то, т.к. при вводе, например, в Блокнот, или Ворд, при Русской раскладке клавиатуры 0 не с цифровой панели, 0 же и вводится, то я бы в .js вместо строки переключения клавы
.................................
WshShell.SendKeys("%+");
мог бы написать строку
.................................
WshShell.SendKeys("^0");
, как раз и имитирующую нажатие клавиш
Ctrl+
0. Но по причине, указанной мной на странице, ссылка на которую приведена в этом повествовании выше, я предпочитаю использовать Казахскую раскладку клавы. А на клаве же при этой раскладке клавы на одной кнопке с нулем из нецифрового блока стоит казахская буква "қ" и эта буква вводится при нажатии на нее в Блокноте или Ворде при казахской раскладке клавиатуры. Так что для того, чтобы записать в файле .js имитацию нажатия сочетания клавиш
Ctrl+
қ, я должен был бы включить в него строку
.................................
WshShell.SendKeys("^қ");
Но при попытке это сделать при сохранении файла .js Блокнот выдаваk ошибку, что, типа, "Этот файл содержит юникод, который будет потерян при сохранении в ANSI". И, действительно, при сохранении и последующем переоткрытии файла в Блокноте на месте этой буквы стоит вопросительный знак. Именно поэтому мне пришлось использовать
не очень надежное сочетание клавиш
Alt+
Shift. Да, еще. Чтобы это все работало, нужно добраться до вкладки
Переключение клавиатуры, как описано
здесь, левой кнопкой мыши щелкнуть по
Переключить язык ввода, затем нажимаем кнопку
Сменить сочетание клавиш, в открывшемся диалоговом окне должно быть так:
Я специально сфотографировал только левую часть того окна, подчеркнув, что в данном случае важно только это. Хотя я не понимаю, почему за это не отвечает правый переключатель того же окна
Смена раскладки клавиатуры, казалось бы, этот переключатель тоже должен иметь отношение к делу, хотя, с другой стороны, чем-то же эти переключатели должны друг от друга отличаться!
P.S. Теперь еще вот что. Сегодня попробовал, получилось. Рассказываю. Если закрепить в меню Пуск созданный файл cmd.exe.js, то по внешнему виду это будет отличаться от закрепленной в панели задач Командной строки. Ща сделаем, что будет один в один. Для этого нужно создать ярлык файла cmd.exe.js, переименовать его в
Командная строка. Прям так и написав, без "...
- ярлык". Далее щелкаем по этому ярлыку правой кнопкой мышки, в открывшемся контекстном меню щелкаем левой кнопкой мышки пункт
Свойства, там переходим на вкладку
Ярлык, нажимаем кнопку
Сменить значок, нажимаем кнопку
Обзор, в открывшемся окне переходим в папку
C:\Windows\System32, ищем там файл
cmd, щелкаем по нему левой кнопкой мышки, нажимаем кнопку Открыть, в следующих окнах нужно будет 2 раза нажать кнопки
OK, там захочешь - не перепутаешь. Все, после этого наш ярлык начинает выглядеть, как командная строка. И теперь его и закрепляем в меню Пуск:
Сверху ярлык на изготовленной мной файл .js, а снизу для сравнения стандартная Майкрософтовская командная строка.
Ник
ОтветитьУдалитьСпасибо за инфу
ОтветитьУдалить