Перейти к содержимому

Фотография

Смена языка


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Roma

Roma

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Паниотов Роман Арнольдович

Отправлено 08 декабря 2008 - 09:19

Я думаю я не первый кто сталкивается с этой проблемой,
запускаю скрипт в котором например ввожу сначала английской раскладкой текст
потом переключаю на русский
Следом запускаю другой скрипт где снова ввожу текст на англ язе
скрипт вылетает, тк язык у меня остался русский или наоборот

в нете нашел только это

" Изменение раскладки клавиатуры при входе в систему. В диалоговом окне входа в систему, можно видеть индикатор раскладки клавиатуры, при этом раскладка по умолчанию определяется параметрами при установке Windows. Параметры, отвечающие за раскладку в диалоговом окне входа в систему, хранятся в следующих ключах реестра:
[HKEY_USERS.DEFAULTKeyboard LayoutPreload]
"1"="xxx" (основная, по умолчанию)
"2"="xxx" (дополнительная, переключение)
где "xxx" может принимать значения: "00000409" - английская раскладка и "00000419" - русская раскладка. "

вопрос, какой ключ отвечает за язык раскладки во время работы винды?

чтобы получить его значение и если язык в скрипте устраивать не будет, чтоб менять на другой.
  • 0

#2 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 08 декабря 2008 - 18:13

Я думаю я не первый кто сталкивается с этой проблемой,
запускаю скрипт в котором например ввожу сначала английской раскладкой текст
потом переключаю на русский
Следом запускаю другой скрипт где снова ввожу текст на англ язе
скрипт вылетает, тк язык у меня остался русский или наоборот

в нете нашел только это

" Изменение раскладки клавиатуры при входе в систему. В диалоговом окне входа в систему, можно видеть индикатор раскладки клавиатуры, при этом раскладка по умолчанию определяется параметрами при установке Windows. Параметры, отвечающие за раскладку в диалоговом окне входа в систему, хранятся в следующих ключах реестра:
[HKEY_USERS.DEFAULTKeyboard LayoutPreload]
"1"="xxx" (основная, по умолчанию)
"2"="xxx" (дополнительная, переключение)
где "xxx" может принимать значения: "00000409" - английская раскладка и "00000419" - русская раскладка. "

вопрос, какой ключ отвечает за язык раскладки во время работы винды?

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

На каком языке пишите код?
Если есть возможность использовать winapi, то Здесь пример кода для определения текущей раскладки клавиатуры.
  • 0

#3 Roma

Roma

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Паниотов Роман Арнольдович

Отправлено 09 декабря 2008 - 06:46

[На каком языке пишите код?
Если есть возможность использовать winapi, то Здесь пример кода для определения текущей раскладки клавиатуры.


на java и у меня вчера получилось вот такое вот

try
{
String Layout1 = getOperatingSystem().getRegistryValue("HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\1");
System.out.println(Layout1); // получил код текущей раскладки
String Layout2 = getOperatingSystem().getRegistryValue("HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\2");
System.out.println(Layout2); // получил код второй раскладки

if (Layout1.equalsIgnoreCase("00000409")) //если английский, продолжаем работать
System.out.println("Продолжаем работу");
else
// LoadKeyboardLayout("00000409", KLF_ACTIVATE);
System.out.println("не прошло");
}
catch (Exception e)
{
System.out.println("Лажа какая-то произошла");
}

получить код у меня то получается, а вот как теперь сделать так, чтобы если у меня англ, то поменят на русский и наоборот? те как присвоить текущей раскладке код второй раскладки? в нете нашел вот эту функцию,
LoadKeyboardLayout("00000409", KLF_ACTIVATE);
но она не совсем работает, вернее на саму функцию java не ругается, но на KLF_ACTIVATE она не понимает что это такое, и я чесно говоря тоже не знаю что это за параметр. Сейчас буду в нете продолжать копаться

нарыл еще вот эту штучку
ActivateKeyboardLayout(LoadKeyboardLayout('00000409',0),0) - Eng
ActivateKeyboardLayout(LoadKeyboardLayout('00000419',0),0) - Rus
но java ругается...
  • 0

#4 Roma

Roma

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Паниотов Роман Арнольдович

Отправлено 09 декабря 2008 - 06:47

Забыл сказать спасибо) но winapi не юзаю, но сейчас посмотрю что это такое)
  • 0

#5 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 09 декабря 2008 - 11:58

[На каком языке пишите код?
Если есть возможность использовать winapi, то Здесь пример кода для определения текущей раскладки клавиатуры.


на java и у меня вчера получилось вот такое вот

try
{
String Layout1 = getOperatingSystem().getRegistryValue("HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\1");
System.out.println(Layout1); // получил код текущей раскладки
String Layout2 = getOperatingSystem().getRegistryValue("HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\2");
System.out.println(Layout2); // получил код второй раскладки

if (Layout1.equalsIgnoreCase("00000409")) //если английский, продолжаем работать
System.out.println("Продолжаем работу");
else
// LoadKeyboardLayout("00000409", KLF_ACTIVATE);
System.out.println("не прошло");
}
catch (Exception e)
{
System.out.println("Лажа какая-то произошла");
}

получить код у меня то получается, а вот как теперь сделать так, чтобы если у меня англ, то поменят на русский и наоборот? те как присвоить текущей раскладке код второй раскладки? в нете нашел вот эту функцию,
LoadKeyboardLayout("00000409", KLF_ACTIVATE);
но она не совсем работает, вернее на саму функцию java не ругается, но на KLF_ACTIVATE она не понимает что это такое, и я чесно говоря тоже не знаю что это за параметр. Сейчас буду в нете продолжать копаться

нарыл еще вот эту штучку
ActivateKeyboardLayout(LoadKeyboardLayout('00000409',0),0) - Eng
ActivateKeyboardLayout(LoadKeyboardLayout('00000419',0),0) - Rus
но java ругается...

1. KLF_ACTIVATE - это константа, равная 1 в API Windows. Попробуйте у себя создать константу типа Integer со значением, равным 1 и передать в эту функцию.
Подробное описание парметров LoadKeyboardLayout есть здесь
2. Если первое не поможет, то попробуйте использовать джавишный InputContext class для определения и переключения раскладок.
  • 0

#6 Roma

Roma

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Паниотов Роман Арнольдович

Отправлено 09 декабря 2008 - 13:52

Спасибо, сейчас еще и так попробую)))

а я решил проблемку по другому

try
{
String Layout1 = getOperatingSystem().getRegistryValue("HKEY_CURRENT_USER\\Keyboard Layout\\Preload\\1");
System.out.println(Layout1); // получаю то что у меня сейчас, те какой язык стоит
if (Layout1.equalsIgnoreCase("00000419")) // если язык русский, то меняю на англ
{
новоеСообщениеwindow().inputKeys("+{LeftCtrl}"); // меняется таким образом "новоеСообщение"- название формы,
// window().inputKeys("+{LeftCtrl}"); общая команда, гд "+" значит shift
sleep(5);
System.out.println("Продолжаем работу");
}
else
System.out.println("не прошло");
}
catch (Exception e)
{
System.out.println("Лажа какая-то произошла");
}

про все можно тут почитать, чем я сейчас занимаюсь)

http://publib.boulde...ITopWindow.html

надеюсь кому нить это тоже пригодится)))
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных