1 (изменено: andrew76, 2015-03-09 18:04:22)

Тема: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Добрый день !

Возможно ли методами WSH прочитать из реестра Windows ,(или еще как-либо),
текущее значение языка ввода клавиатуры? То есть мне нужно "считать
значение" из индикатора в трее (RU/EN/) ?

2

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76
Раскладка клавиатуры для каждого окна своя. В реестр такая информация не пишется.
Конечная задача в чём состоит?

3

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Задача состоит в том ,чтобы принудительно включить английский язык, (как язык ввода с клавиатуры).Или средствами WSH это невозможно?

4

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76 пишет:

Задача состоит в том ,чтобы принудительно включить английский язык, (как язык ввода с клавиатуры).Или средствами WSH это невозможно?

На чистом WSH - вряд ли, с использованием, например, DynamicWrapperX - не исключено. Задача по сути сводится к получению хендла окна, передаче его GetWindowThreadProcessId, полученное значение которого передается GetKeyboardLayout, ну а далее останется получить собственно имя, если мне не изменяет память.

5

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76
В каком окне и в какой момент это нужно производить? Есть способ и без DynamicWrapperX.

6

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Это принудительное переключение нужно производить в текущем окне.С моментом времени-не знаю как.
В общем -сразу.

7

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Из какого текущего? Может, из активного?
А как будет вызываться скрипт из этого окна, если клавиатурный вызов не годится? По кнопке, через меню?
Что за приложение хоть?

8

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Flasher пишет:

Есть способ и без DynamicWrapperX.

Попробую телепатировать: имеется в виду SendKeys.

9 (изменено: Flasher, 2015-03-11 11:48:51)

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

greg zakharov, разумеется. Вопрос переноски тоже открыт (т.е. нужно смотреть чем переключать или нет).
Хотя нет, мой способ годится только если переключений до того момента не было...

10

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Flasher, насколько помню, то SendKeys не умеет переключать раскладку в консоли, и если имеется в виду именно окно консоли, то... хотя может и ошибаюсь. Как вариант можно извратиться с mshta, но писать пример, если честно, не хочется, - нет мотивации.

11

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76 пишет:

Это принудительное переключение нужно производить в текущем окне.С моментом времени-не знаю как.
В общем -сразу.

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

12 (изменено: andrew76, 2015-03-11 17:46:28)

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Flasher пишет:

Из какого текущего? Может, из активного?
А как будет вызываться скрипт из этого окна, если клавиатурный вызов не годится? По кнопке, через меню?
Что за приложение хоть?

Приложение 1С версии 8.2.Окно -активное(оно же текущее).На окне присутствуют поля
для ввода данных.При активации (получения фокуса) определенного поля мне нужно
принудительно включить анг.язык.Метод sendkey(с параметром Alt+Shift) срабатывает,но просто переключает текущую раскладку.Поясню если текущая была -Ru .то после вызова
Senkey будет "En".А если текущая была -"En",то после вызова sendkey ,будет "Ru".
Проблема в том ,что я не "вижу программно" какой язык ввода клавиатуры на данный момент ,перед вызовом Sendkey.Ситуация усугублена тем,что в системах у пользователей
установлены 3 языка ввода: русский,английский,узбекский.

Про вариант с GetKeyboardLayout: c помощью WSH можно ли вызвать какую-либо функцию,
процедуру из  определённой DLL?

13

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76, если Вам нужно получать фокус на конкретном элементе управления формы, а после еще и менять раскладку, то это про WinAPI однозначно. Тогда придется задействовать такие функции, как FindWindow, FindWindowEx, SetFocus и дыр и пыр, короче, Вы сформулируйте четко от "А" до "Я" цель и изложите, а то телепатировать уже не получается.

andrew76 пишет:

Про вариант с GetKeyboardLayout: c помощью WSH можно ли вызвать какую-либо функцию,
процедуру из  определённой DLL?

Лично DynamicWrapperX пробовал один раз, да и то для тестов (YMP не в обиду!).

14

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

Это на AutoHotkey проще решать. Он для таких вещей и предназначен.

15

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

greg zakharov пишет:

andrew76, если Вам нужно получать фокус на конкретном элементе управления формы, а после еще и менять раскладку, то это про WinAPI однозначно. Тогда придется задействовать такие функции, как FindWindow, FindWindowEx, SetFocus и дыр и пыр, короче, Вы сформулируйте четко от "А" до "Я" цель и изложите, а то телепатировать уже не получается.

Попытаюсь сформулировать четко:
Функции FindWindow, FindWindowEx, SetFocus мне в этом деле не нужны.Всё это мне
"предоставит" 1С со своей "программной стороны".Основная проблема-включить принудительно английский язык.Повторюсь команда wsh.sendkey("alt+shift") в программе
у меня срабатывает на ура-я просто не знаю ( с точки зрения программы) ,какой язык
включен у меня до выполнения команды wsh.sendkey("alt+shift").

Метод вызова фунции из DLL через WSH не подскажите?

16

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

andrew76 пишет:

Метод sendkey(с параметром Alt+Shift) срабатывает,но просто переключает текущую раскладку.

Как видно из изображения, имеется возможность (хотя она здесь и не включена) назначить для разных раскладок свои сочетания клавиш:
http://i57.fastpic.ru/big/2015/0311/b9/b759548ad8425d59f649d46a38c4e0b9.gif

Забыл пароль и потерял e-mail.

17

Re: WSH:прочитать из реестра Windows текущее значение языка ввода (RU/EN)

greg zakharov пишет:

Flasher, насколько помню, то SendKeys не умеет переключать раскладку в консоли

Да. Я в т.ч. поэтому и спрашивал про то, какое окно.

andrew76 пишет:

Окно -активное(оно же текущее)

В том числе, среди прочих.

andrew76 пишет:

Ситуация усугублена тем,что в системах у пользователей установлены 3 языка ввода: русский,английский,узбекский.

Это как раз не проблема. Проблему я указал - наличие предыдущих переключений.

andrew76 пишет:

Метод вызова фунции из DLL через WSH не подскажите?

Пожалуйста, там в самом низу пример как раз под 1С.