VBS раскладка клавиатуры
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3, 4, 5  Next  :| |:
Total Commander -> Программное обеспечение

#1: VBS раскладка клавиатуры Author: _D_V_S_ PostPosted: Thu Apr 04, 2013 23:20
    —
Доброе время суток!

Подскажите, как реализовать в VBS переключение языковой раскладки?

То есть у меня рабочий VBS с выбором запуска двух программ. Для одной нужно писать по-английски, для другой - по-русски. Надо вставить код переключения раскладки языка (или как это правильно называется - ХЗ...)

Думал как корректно это организовать.

1) считываем с реестра необходимые ветки. -> сохраняем их.
2) заносим в реестр такую конструкцию:
- смена раскладки по Контрол+Шифт
- назначение русской раскладки на сочетание клавиш 1
- назначение английской раскладки на сочетание клавиш 2
3) WshShell.SendKeys и выполнение необходимых действий скрипта
4) удаление из реестра внесённых изменений и занесение в реестр сохранённых веток

Вот без ребута винды, "на лету", смена сочетаний клавиш и остальное с реестром - будет работать?

Помогите плиз со скриптом - я в VBS совсем начинающий!

#2:  Author: FlasherLocation: Москва PostPosted: Fri Apr 05, 2013 16:49
    —
_D_V_S_
С подключение сторонних компонент и API сделать, конечно, реально.
Можно также попробовать подключить js через htmlfile или ScriptControl.
Простые игры с реестром ничего не дадут.
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.

#3:  Author: _D_V_S_ PostPosted: Sat Apr 06, 2013 07:48
    —
Flasher wrote:
_D_V_S_
Но лучше отказаться от метода и использовать копипаст либо сторонние утилиты типа nircmd/TCFS2.

К сожалению надо именно без сторонних компонент.

#4:  Author: FlasherLocation: Москва PostPosted: Sat Apr 06, 2013 14:26
    —
_D_V_S_ wrote:
К сожалению надо именно без сторонних компонент.
Копипаст без сторонних. Утилиты - это не компоненты. И надо - почему?

#5:  Author: _D_V_S_ PostPosted: Sat Apr 06, 2013 15:41
    —
Я так понимаю, что средствами чистого VBS это невозможно?
Про совместное использование VBS и утилит я-бы тут даже тему не стал создавать Smile

#6:  Author: FlasherLocation: Москва PostPosted: Sat Apr 06, 2013 16:03
    —
Смотря что понимать под "чистым". Я не пойму, зачем вообще набивать посимвольно? Это же долго.
Это нужно для работы на любом Windows/любой машине или достаточно только на своей?

#7:  Author: _D_V_S_ PostPosted: Sun Apr 07, 2013 11:27
    —
На любой, делаю не только для себя.

А метод, описанный мной в титульном сообщении, работать не будет? Почему если в двух словах?

#8:  Author: FlasherLocation: Москва PostPosted: Sun Apr 07, 2013 14:36
    —
Я так ответ на свой первый вопрос не увидел.

Внесение в реестр, может, и будет работать, но я не уверен, что ветки создаются в кусте HKCU\Control Panel\Input Method\Hot Keys\ в одной и той же последовательности при присвоении порядкового номера 000010х.
Будет зависеть от наличия существующих веток, кол-ва языков раскладки и последовательности присвоения. Не факт, что срабатывать хоткей будет с первого раза, поскольку информация о клавишах может считываться из ОЗУ или файла подкачки. Надо тестировать.
Кстати, смена раскладки по Ctrl+Shift ничего не даст, это лишнее.

Но я бы делал через DynamicWrapper без регистрации..
Да нет, я вообще бы SendKeys для буквенных клавиш не использовал..

#9:  Author: _D_V_S_ PostPosted: Mon Apr 08, 2013 01:51
    —
Flasher wrote:
Я так ответ на свой первый вопрос не увидел.
использовал..

На какой? "Почему надо без сторонних утилит"?

Ну так не только для себя-ж хочется сделать Smile
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...

Да, может я не совсем понятно описал то, что мне надо.

Нужно-то просто включение нужной раскладки языка при выборе пункта мессадж-бокса.
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
И тут встаёт проверка на текущую раскладку.

Вот и ломаю голову сижу, как это сделать...

#10:  Author: FlasherLocation: Москва PostPosted: Mon Apr 08, 2013 02:02
    —
_D_V_S_ wrote:
На какой?
>
Flasher wrote:
зачем вообще набивать посимвольно?

_D_V_S_ wrote:
А скрипт + экзешник это совсем другое...
Другое - это какое? Smile
_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

#11:  Author: _D_V_S_ PostPosted: Mon Apr 08, 2013 03:55
    —
Flasher wrote:
зачем вообще набивать посимвольно?

Да нет )) Просто переключить раскладку языка...
_D_V_S_ wrote:
А скрипт + экзешник это совсем другое...
Flasher wrote:
Другое - это какое? Smile

А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)))
_D_V_S_ wrote:
То есть выбрал пункт первый и включается английский язык, выбрал пункт второй - включается русский язык.
Flasher wrote:
И что? Каждый раз дёргать реестр, чтобы что-то набивать в нужном поле?

Один раз... При выборе пункта мессадж-бокса.

А DynamicWrapper - это dll-ку надо какую регистрить стороннюю?
Неужели стандартным VBS никак нельзя поменять язык ввода? Задача вроде тривиальная...

#12:  Author: LonerDLocation: Донецк PostPosted: Mon Apr 08, 2013 05:38
    —
Quote:
Они видят в каждом .exe вирусную угрозу и кражу паролей

При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.

Quote:
Один скрипт VBS с открытым кодом - это одно.
А скрипт + экзешник это совсем другое...

Как вариант - подключить другой скриптовый язык. Скрипт с открытым исходным кодом+исполняемый ехе-шник AutoIt3, на нём это проще организовать.

#13:  Author: _D_V_S_ PostPosted: Mon Apr 08, 2013 07:32
    —
Нет, все варианты с экзешниками в любом виде не рассматриваются.
Только стандартные виндовозные скрипты.
Я-б тогда тему не создавал тут, а всё сам-бы давно сделал.

А уровень паранойи людей, которые называют ENTER интером - заоблачен. И ничем не прошибаем. Ну не мне вам рассказывать Smile


LonerD wrote:
При таком уровне паранойи наверняка и выполнение скриптов отключено в системе.

Чтобы отключить и включить что-то в системе, нужно обладать несколько другими знаниями - при которых уровень паранойи как-бы снижается в геометрической прогрессии Wink

#14:  Author: FlasherLocation: Москва PostPosted: Mon Apr 08, 2013 14:25
    —
_D_V_S_ wrote:
Да нет )) Просто переключить раскладку языка.
Понял. В этом случае VBS точно не подойдёт в исходном виде. Тут желателен AHK с отслеживанием контролов. В крайнем случае можно скомпилить, чтобы сторонних exe не было.
_D_V_S_ wrote:
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят. Question
_D_V_S_ wrote:
Один раз... При выборе пункта мессадж-бокса.
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote:
А уровень паранойи людей, которые называют ENTER интером - заоблачен.
Хм. Не ваш клиент? Wink

#15:  Author: _D_V_S_ PostPosted: Mon Apr 08, 2013 17:13
    —
Flasher wrote:

_D_V_S_ wrote:
А объяснишь людям? )) Они видят в каждом .exe вирусную угрозу и кражу паролей)
Я то объясню, если потребуется. Но пока что-то логики не улавливаю. В каждом exe видят, а в каждом скрипте не видят. Question
_D_V_S_ wrote:
Один раз... При выборе пункта мессадж-бокса.
МэссейджБокс не имеет полей. Какой смысл в таком окне менять раскладку? О каких пунктах речь?
_D_V_S_ wrote:
А уровень паранойи людей, которые называют ENTER интером - заоблачен.
Хм. Не ваш клиент? Wink


1) Скрипт с непонятными для них кракозябрами в большинстве не вызывает такого отторжения, нежели исполняемый файл - который в их представлении напичкан червями, вирусами и другими бэк-доорами с кей-логгерами Smile Хоть они слов-то таких и в страшном сне не слышали ))))

2) Мессадж бокс имеет кнопки: Да Нет и Отмена.
Да - включается русский язык и запускается программа1, в которой в текстовые поля юзер набивает текст на русском языке
Нет - включается общепринятый буржуйский язык и запускается программа2, в которой в текстовые поля юзер набивает текст на аглицкой мове
Отмена - выполняются некоторые действия, к сабжу не имеющие отношения.


3) Гляну тред попозже Smile



Total Commander -> Программное обеспечение


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3, 4, 5  Next  :| |:
Page 1 of 5

Powered by phpBB © 2001, 2005 phpBB Group