Страница 2 из 5

Добавлено: Пн апр 08, 2013 17:54
MVV
В виндовсах по Windows 7 включительно любая вновь запущенная программа имеет раскладку по умолчанию. Её можно узнать в реестре. Далее, если она русская, то надо переключать язык только для буржуйской, если она английская - только для русской. Разумеется, уже после запуска программы, когда та получит фокус (раскладка переключается для приложения, окно которого активно). Комбинация для переключения узнаётся из того же реестра, нет необходимости туда ничего писать.

Добавлено: Пн апр 08, 2013 18:07
Flasher
_D_V_S_
1) Видимо, их ещё не пугали скриптами. Дайте мне жертву! :twisted: Мнения начнут быстро меняться.
2) А, теперь ясно. Нужно менять после нажатия, а не до ввода, как я думал.

MVV
Состояние языка ввода отследить реестром нельзя. Какая раскладка является дефолтной - значения не имеет.

Добавлено: Пн апр 08, 2013 18:15
MVV
Настройка языка ввода по умолчанию определяет, какая раскладка будет включена при запуске новой программы. В Win8 это вековое поведение изменено, там (если правильно помню) программа наследует язык ввода от предка.

Раздел HKEY_CURRENT_USER\Keyboard Layout\Preload, значение 1: если оно равно 0x409, язык ввода по умолчанию английский, если оно равно 0x419 - русский.

Из раздела HKEY_CURRENT_USER\Keyboard Layout\Toggle можно узнать комбинацию для переключения, значения подбираются элементарно (сменить комбинацию, применить, посмотреть значение в разделе, и так для каждого варианта, а их всего-то 4).

Добавлено: Пн апр 08, 2013 19:27
Flasher
Есть нюансы.
Может не быть новой программы, переключение может понадобиться в активном окне.
Toggle не годится, когда языков больше двух.

Если у клиентов XP, то можно KB16 RU /E и KB16 EN /E использовать.
На 7-ке какие-то косяки с командой.

Добавлено: Пн апр 08, 2013 19:42
_D_V_S_
А можно принудительно включать нужную раскладку стандартными виндузятными встроенными средствами (ну которая меняет сочетания клавиш ввода с альт+шифт на контрол+шифт и т.д.)?

По-моему там можно назначить сочетание клавиш для ввода нужной раскладки на отдельные сочетания клавиш (не смены раскладки, а именно - включения нужной. ) То есть независимо от текущего языка можно (не переключая его) включить его.

При переключении язык меняется на другой. А тут включаем русский например - если русский в системе активен, он не меняется; если английский - меняется на русский.

Есть такое в Винде, или нет?

Нельзя как-нибудь к этому подобраться средствами VBS ?

ЗЫ Сумбурно как-то объясняю, но вроде донёс мысль :-)

Добавлено: Пн апр 08, 2013 20:11
Flasher
_D_V_S_
Стандартные средства - это назначенные клавиши.
Я предложил kb16. Системы какие у клиентов?

Про назначение на каждый язык в отдельности я уже писал.

Добавлено: Вт апр 09, 2013 09:33
_D_V_S_
Flasher писал(а):_D_V_S_
Системы какие у клиентов?
Win7 (32-64) и некоторые с ХР сидят

Добавлено: Вт апр 09, 2013 13:39
Flasher
Ясно, не годится.
MVV писал(а):Раздел HKEY_CURRENT_USER\Keyboard Layout\Preload, значение 1: если оно равно 0x409, язык ввода по умолчанию английский, если оно равно 0x419 - русский.
Попробовал на XP. Ничего не даёт. Раскладка не меняется.

Добавлено: Вт апр 09, 2013 14:49
MVV
Я не предлагаю менять значение ключа. Разумеется, оболочка держит эти значения в памяти до закрытия.
Я предлагаю читать эти значения, чтобы понять, какой язык будет у программы при запуске, и при необходимости переключать его.

Добавлено: Вт апр 09, 2013 15:16
Flasher
MVV писал(а):Я предлагаю читать эти значения, чтобы понять, какой язык будет у программы при запуске, и при необходимости переключать его.
Главное - это само переключение. Читать значение или не читать - не важно. Даже если делать это каждый раз, сути это не изменит. Сейчас задача переключаться на конкретный язык ввода.

Добавлено: Вт апр 09, 2013 15:32
MVV
Ну разве это сложно? Посмотрел в реестре, Ctrl+Shift или Alt+Shift, и послал окну, если надо поменять язык.

Добавлено: Вт апр 09, 2013 15:44
Flasher
Не то, чтобы сложно, но муторно. Ctrl+Shift или Alt+Shift не переключает на конкретный язык...

Добавлено: Вт апр 09, 2013 16:46
MVV
Если это будет запускаться на однотипных машинах, можно настроить скрипт так, чтобы переключало. Раз уж VBS не может вызвать функцию ActivateKeyboardLayout.

Добавлено: Вт апр 09, 2013 17:17
Flasher
Выше писалось про разные машины.
Кто сказал, что не может? Компонент внешний просто..

Добавлено: Вт апр 09, 2013 18:03
_D_V_S_
Flasher писал(а):Ctrl+Shift или Alt+Shift не переключает на конкретный язык...
Проверить текущую раскладку.

Если нужна другая, то СендКейз.

И перед переключением (СендКейз) - если в реестр записать конкретное сочетание клавиш (Ctrl+Shift например), чтобы сработало у кого установлено Alt+Shift ?

Правда после СендКейз в скрипте придётся его откатывать обратно...

Так разве нельзя?

ЗЫ Установил аватарку :-)