View previous topic :: View next topic |
Author |
Message |
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Thu Apr 04, 2013 23:20 Post subject: VBS раскладка клавиатуры |
|
|
Доброе время суток!
Подскажите, как реализовать в VBS переключение языковой раскладки?
То есть у меня рабочий VBS с выбором запуска двух программ. Для одной нужно писать по-английски, для другой - по-русски. Надо вставить код переключения раскладки языка (или как это правильно называется - ХЗ...)
Думал как корректно это организовать.
1) считываем с реестра необходимые ветки. -> сохраняем их.
2) заносим в реестр такую конструкцию:
- смена раскладки по Контрол+Шифт
- назначение русской раскладки на сочетание клавиш 1
- назначение английской раскладки на сочетание клавиш 2
3) WshShell.SendKeys и выполнение необходимых действий скрипта
4) удаление из реестра внесённых изменений и занесение в реестр сохранённых веток
Вот без ребута винды, "на лету", смена сочетаний клавиш и остальное с реестром - будет работать?
Помогите плиз со скриптом - я в VBS совсем начинающий! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Apr 05, 2013 16:49 Post subject: |
|
|
_D_V_S_
С подключение сторонних компонент и API сделать, конечно, реально.
Можно также попробовать подключить js через htmlfile или ScriptControl.
Простые игры с реестром ничего не дадут.
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Sat Apr 06, 2013 07:48 Post subject: |
|
|
Flasher wrote: | _D_V_S_
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2. |
К сожалению надо именно без сторонних компонент. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 06, 2013 14:26 Post subject: |
|
|
_D_V_S_ wrote: | К сожалению надо именно без сторонних компонент. | Копипаст без сторонних. Утилиты - это не компоненты. И надо - почему? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Sat Apr 06, 2013 15:41 Post subject: |
|
|
Я так понимаю, что средствами чистого VBS это невозможно?
Про совместное использование VBS и утилит я-бы тут даже тему не стал создавать |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Apr 06, 2013 16:03 Post subject: |
|
|
Смотря что понимать под "чистым". Я не пойму, зачем вообще набивать посимвольно? Это же долго.
Это нужно для работы на любом Windows/любой машине или достаточно только на своей? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Sun Apr 07, 2013 11:27 Post subject: |
|
|
На любой, делаю не только для себя.
А метод, описанный мной в титульном сообщении, работать не будет? Почему если в двух словах? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Apr 07, 2013 14:36 Post subject: |
|
|
Я так ответ на свой первый вопрос не увидел.
Внесение в реестр, может, и будет работать, но я не уверен, что ветки создаются в кусте HKCU\Control Panel\Input Method\Hot Keys\ в одной и той же последовательности при присвоении порядкового номера 000010х.
Будет зависеть от наличия существующих веток, кол-ва языков раскладки и последовательности присвоения. Не факт, что срабатывать хоткей будет с первого раза, поскольку информация о клавишах может считываться из ОЗУ или файла подкачки. Надо тестировать.
Кстати, смена раскладки по Ctrl+Shift ничего не даст, это лишнее.
Но я бы делал через DynamicWrapper без регистрации..
Да нет, я вообще бы SendKeys для буквенных клавиш не использовал.. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Mon Apr 08, 2013 01:51 Post subject: |
|
|
Flasher wrote: | Я так ответ на свой первый вопрос не увидел.
использовал.. |
На какой? "Почему надо без сторонних утилит"?
Ну так не только для себя-ж хочется сделать
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...
Да, может я не совсем понятно описал то, что мне надо.
Нужно-то просто включение нужной раскладки языка при выборе пункта мессадж-бокса.
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
И тут встаёт проверка на текущую раскладку.
Вот и ломаю голову сижу, как это сделать... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Apr 08, 2013 02:02 Post subject: |
|
|
> Flasher wrote: | зачем вообще набивать посимвольно? |
_D_V_S_ wrote: | А скрипт + экзешник это совсем другое... | Другое - это какое?
_D_V_S_ wrote: | То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык. | И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле? ОВНС.
_D_V_S_ wrote: | И тут встаёт проверка на текущую раскладку. | Зачем проверка? Описывалась принудительная смена.
_D_V_S_ wrote: | Вот и ломаю голову сижу, как это сделать | Стандартными методами никак. Нестандартными, например, так: Code: | 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) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Mon Apr 08, 2013 03:55 Post subject: |
|
|
Flasher wrote: | зачем вообще набивать посимвольно? |
Да нет )) Просто переключить раскладку языка...
_D_V_S_ wrote: | А скрипт + экзешник это совсем другое... |
Flasher wrote: | Другое - это какое? |
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)))
_D_V_S_ wrote: | То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык. |
Flasher wrote: | И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле? |
Один раз... При выборе пункта мессадж-бокса.
А DynamicWrapper - это dll-ку надо какую регистрить стороннюю?
Неужели стандартным VBS никак нельзя поменять язык ввода? Задача вроде тривиальная... |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Mon Apr 08, 2013 05:38 Post subject: |
|
|
Quote: | Они видят в каждом .exe вирусную угрозу и кражу паролей |
При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.
Quote: | Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое... |
Как вариант - подключить другой скриптовый язык. Скрипт с открытым исходным кодом+исполняемый ехе-шник AutoIt3, на нём это проще организовать. _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Mon Apr 08, 2013 07:32 Post subject: |
|
|
Нет, все варианты с экзешниками в любом виде не рассматриваются.
Только стандартные виндовозные скрипты.
Я-б тогда тему не создавал тут, а всё сам-бы давно сделал.
А уровень паранойи людей, которые называют ENTER интером - заоблачен. И ничем не прошибаем. Ну не мне вам рассказывать
LonerD wrote: | При таком уровне паранойи наверняка и выполнение скриптов отключено в системе. |
Чтобы отключить и включить что-то в системе, нужно обладать несколько другими знаниями - при которых уровень паранойи как-бы снижается в геометрической прогрессии |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Apr 08, 2013 14:25 Post subject: |
|
|
_D_V_S_ wrote: | Да нет )) Просто переключить раскладку языка. | Понял. В этом случае VBS точно не подойдёт в исходном виде. Тут желателен AHK с отслеживанием контролов. В крайнем случае можно скомпилить, чтобы сторонних exe не было.
_D_V_S_ wrote: | А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей) | Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят.
_D_V_S_ wrote: | Один раз... При выборе пункта мессадж-бокса. | МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote: | А уровень паранойи людей, которые называют ENTER интером - заоблачен. | Хм. Не ваш клиент? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
_D_V_S_
Joined: 31 Jan 2009 Posts: 35
|
(Separately) Posted: Mon Apr 08, 2013 17:13 Post subject: |
|
|
Flasher wrote: |
_D_V_S_ wrote: | А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей) | Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят.
_D_V_S_ wrote: | Один раз... При выборе пункта мессадж-бокса. | МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote: | А уровень паранойи людей, которые называют ENTER интером - заоблачен. | Хм. Не ваш клиент? |
1) Скрипт с непонятными для них кракозябрами в большинстве не вызывает такого отторжения, нежели исполняемый файл - который в их представлении напичкан червями, вирусами и другими бэк-доорами с кей-логгерами Хоть они слов-то таких и в страшном сне не слышали ))))
2) Мессадж бокс имеет кнопки: Да Нет и Отмена.
Да - включается русский язык и запускается программа1, в которой в текстовые поля юзер набивает текст на русском языке
Нет - включается общепринятый буржуйский язык и запускается программа2, в которой в текстовые поля юзер набивает текст на аглицкой мове
Отмена - выполняются некоторые действия, к сабжу не имеющие отношения.
3) Гляну тред попозже |
|
Back to top |
|
|
|