VBS раскладка клавиатуры
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
VBS раскладка клавиатуры
Доброе время суток!
Подскажите, как реализовать в VBS переключение языковой раскладки?
То есть у меня рабочий VBS с выбором запуска двух программ. Для одной нужно писать по-английски, для другой - по-русски. Надо вставить код переключения раскладки языка (или как это правильно называется - ХЗ...)
Думал как корректно это организовать.
1) считываем с реестра необходимые ветки. -> сохраняем их.
2) заносим в реестр такую конструкцию:
- смена раскладки по Контрол+Шифт
- назначение русской раскладки на сочетание клавиш 1
- назначение английской раскладки на сочетание клавиш 2
3) WshShell.SendKeys и выполнение необходимых действий скрипта
4) удаление из реестра внесённых изменений и занесение в реестр сохранённых веток
Вот без ребута винды, "на лету", смена сочетаний клавиш и остальное с реестром - будет работать?
Помогите плиз со скриптом - я в VBS совсем начинающий!
Подскажите, как реализовать в VBS переключение языковой раскладки?
То есть у меня рабочий VBS с выбором запуска двух программ. Для одной нужно писать по-английски, для другой - по-русски. Надо вставить код переключения раскладки языка (или как это правильно называется - ХЗ...)
Думал как корректно это организовать.
1) считываем с реестра необходимые ветки. -> сохраняем их.
2) заносим в реестр такую конструкцию:
- смена раскладки по Контрол+Шифт
- назначение русской раскладки на сочетание клавиш 1
- назначение английской раскладки на сочетание клавиш 2
3) WshShell.SendKeys и выполнение необходимых действий скрипта
4) удаление из реестра внесённых изменений и занесение в реестр сохранённых веток
Вот без ребута винды, "на лету", смена сочетаний клавиш и остальное с реестром - будет работать?
Помогите плиз со скриптом - я в VBS совсем начинающий!
_D_V_S_
С подключение сторонних компонент и API сделать, конечно, реально.
Можно также попробовать подключить js через htmlfile или ScriptControl.
Простые игры с реестром ничего не дадут.
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.
С подключение сторонних компонент и API сделать, конечно, реально.
Можно также попробовать подключить js через htmlfile или ScriptControl.
Простые игры с реестром ничего не дадут.
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Копипаст без сторонних. Утилиты - это не компоненты. И надо - почему?_D_V_S_ писал(а):К сожалению надо именно без сторонних компонент.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Смотря что понимать под "чистым". Я не пойму, зачем вообще набивать посимвольно? Это же долго.
Это нужно для работы на любом Windows/любой машине или достаточно только на своей?
Это нужно для работы на любом Windows/любой машине или достаточно только на своей?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Я так ответ на свой первый вопрос не увидел.
Внесение в реестр, может, и будет работать, но я не уверен, что ветки создаются в кусте HKCU\Control Panel\Input Method\Hot Keys\ в одной и той же последовательности при присвоении порядкового номера 000010х.
Будет зависеть от наличия существующих веток, кол-ва языков раскладки и последовательности присвоения. Не факт, что срабатывать хоткей будет с первого раза, поскольку информация о клавишах может считываться из ОЗУ или файла подкачки. Надо тестировать.
Кстати, смена раскладки по Ctrl+Shift ничего не даст, это лишнее.
Но я бы делал через DynamicWrapper без регистрации..
Да нет, я вообще бы SendKeys для буквенных клавиш не использовал..
Внесение в реестр, может, и будет работать, но я не уверен, что ветки создаются в кусте HKCU\Control Panel\Input Method\Hot Keys\ в одной и той же последовательности при присвоении порядкового номера 000010х.
Будет зависеть от наличия существующих веток, кол-ва языков раскладки и последовательности присвоения. Не факт, что срабатывать хоткей будет с первого раза, поскольку информация о клавишах может считываться из ОЗУ или файла подкачки. Надо тестировать.
Кстати, смена раскладки по Ctrl+Shift ничего не даст, это лишнее.
Но я бы делал через DynamicWrapper без регистрации..
Да нет, я вообще бы SendKeys для буквенных клавиш не использовал..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
На какой? "Почему надо без сторонних утилит"?Flasher писал(а):Я так ответ на свой первый вопрос не увидел.
использовал..
Ну так не только для себя-ж хочется сделать
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...
Да, может я не совсем понятно описал то, что мне надо.
Нужно-то просто включение нужной раскладки языка при выборе пункта мессадж-бокса.
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
И тут встаёт проверка на текущую раскладку.
Вот и ломаю голову сижу, как это сделать...
>_D_V_S_ писал(а):На какой?
Flasher писал(а):зачем вообще набивать посимвольно?
Другое - это какое?_D_V_S_ писал(а):А скрипт + экзешник это совсем другое...
И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле? ОВНС._D_V_S_ писал(а):То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
Зачем проверка? Описывалась принудительная смена._D_V_S_ писал(а):И тут встаёт проверка на текущую раскладку.
Стандартными методами никак. Нестандартными, например, так:_D_V_S_ писал(а):Вот и ломаю голову сижу, как это сделать
Код: Выделить всё
With CreateObject("DynamicWrapper")
.Register "USER32", "ActivateKeyboardLayout", "i=ll", "f=s", "r=l"
.Register "USER32", "LoadKeyboardLayout", "i=sl", "f=s", "r=l"
.ActivateKeyboardLayout .LoadKeyboardLayout("00000419", 0), 0
End WithАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Да нет )) Просто переключить раскладку языка...Flasher писал(а):зачем вообще набивать посимвольно?
_D_V_S_ писал(а):А скрипт + экзешник это совсем другое...
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)))Flasher писал(а):Другое - это какое?
_D_V_S_ писал(а):То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
Один раз... При выборе пункта мессадж-бокса.Flasher писал(а):И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле?
А DynamicWrapper - это dll-ку надо какую регистрить стороннюю?
Неужели стандартным VBS никак нельзя поменять язык ввода? Задача вроде тривиальная...
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.Они видят в каждом .exe вирусную угрозу и кражу паролей
Как вариант - подключить другой скриптовый язык. Скрипт с открытым исходным кодом+исполняемый ехе-шник AutoIt3, на нём это проще организовать.Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...
Windows 11 | TC DreamLair eternal pre-α
Нет, все варианты с экзешниками в любом виде не рассматриваются.
Только стандартные виндовозные скрипты.
Я-б тогда тему не создавал тут, а всё сам-бы давно сделал.
А уровень паранойи людей, которые называют ENTER интером - заоблачен. И ничем не прошибаем. Ну не мне вам рассказывать

Только стандартные виндовозные скрипты.
Я-б тогда тему не создавал тут, а всё сам-бы давно сделал.
А уровень паранойи людей, которые называют ENTER интером - заоблачен. И ничем не прошибаем. Ну не мне вам рассказывать
Чтобы отключить и включить что-то в системе, нужно обладать несколько другими знаниями - при которых уровень паранойи как-бы снижается в геометрической прогрессииLonerD писал(а):При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.
Понял. В этом случае VBS точно не подойдёт в исходном виде. Тут желателен AHK с отслеживанием контролов. В крайнем случае можно скомпилить, чтобы сторонних exe не было._D_V_S_ писал(а):Да нет )) Просто переключить раскладку языка.
Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят._D_V_S_ писал(а):А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?_D_V_S_ писал(а):Один раз... При выборе пункта мессадж-бокса.
Хм. Не ваш клиент?_D_V_S_ писал(а):А уровень паранойи людей, которые называют ENTER интером - заоблачен.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
1) Скрипт с непонятными для них кракозябрами в большинстве не вызывает такого отторжения, нежели исполняемый файл - который в их представлении напичкан червями, вирусами и другими бэк-доорами с кей-логгерамиFlasher писал(а):Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят._D_V_S_ писал(а):А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?_D_V_S_ писал(а):Один раз... При выборе пункта мессадж-бокса.Хм. Не ваш клиент?_D_V_S_ писал(а):А уровень паранойи людей, которые называют ENTER интером - заоблачен.
2) Мессадж бокс имеет кнопки: Да Нет и Отмена.
Да - включается русский язык и запускается программа1, в которой в текстовые поля юзер набивает текст на русском языке
Нет - включается общепринятый буржуйский язык и запускается программа2, в которой в текстовые поля юзер набивает текст на аглицкой мове
Отмена - выполняются некоторые действия, к сабжу не имеющие отношения.
3) Гляну тред попозже