Смена языка
#1
Отправлено 08 декабря 2008 - 09:19
запускаю скрипт в котором например ввожу сначала английской раскладкой текст
потом переключаю на русский
Следом запускаю другой скрипт где снова ввожу текст на англ язе
скрипт вылетает, тк язык у меня остался русский или наоборот
в нете нашел только это
" Изменение раскладки клавиатуры при входе в систему. В диалоговом окне входа в систему, можно видеть индикатор раскладки клавиатуры, при этом раскладка по умолчанию определяется параметрами при установке Windows. Параметры, отвечающие за раскладку в диалоговом окне входа в систему, хранятся в следующих ключах реестра:
[HKEY_USERS.DEFAULTKeyboard LayoutPreload]
"1"="xxx" (основная, по умолчанию)
"2"="xxx" (дополнительная, переключение)
где "xxx" может принимать значения: "00000409" - английская раскладка и "00000419" - русская раскладка. "
вопрос, какой ключ отвечает за язык раскладки во время работы винды?
чтобы получить его значение и если язык в скрипте устраивать не будет, чтоб менять на другой.
#2
Отправлено 08 декабря 2008 - 18:13
На каком языке пишите код?Я думаю я не первый кто сталкивается с этой проблемой,
запускаю скрипт в котором например ввожу сначала английской раскладкой текст
потом переключаю на русский
Следом запускаю другой скрипт где снова ввожу текст на англ язе
скрипт вылетает, тк язык у меня остался русский или наоборот
в нете нашел только это
" Изменение раскладки клавиатуры при входе в систему. В диалоговом окне входа в систему, можно видеть индикатор раскладки клавиатуры, при этом раскладка по умолчанию определяется параметрами при установке Windows. Параметры, отвечающие за раскладку в диалоговом окне входа в систему, хранятся в следующих ключах реестра:
[HKEY_USERS.DEFAULTKeyboard LayoutPreload]
"1"="xxx" (основная, по умолчанию)
"2"="xxx" (дополнительная, переключение)
где "xxx" может принимать значения: "00000409" - английская раскладка и "00000419" - русская раскладка. "
вопрос, какой ключ отвечает за язык раскладки во время работы винды?
чтобы получить его значение и если язык в скрипте устраивать не будет, чтоб менять на другой.
Если есть возможность использовать winapi, то Здесь пример кода для определения текущей раскладки клавиатуры.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#3
Отправлено 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 ругается...
#4
Отправлено 09 декабря 2008 - 06:47
#5
Отправлено 09 декабря 2008 - 11:58
1. KLF_ACTIVATE - это константа, равная 1 в API Windows. Попробуйте у себя создать константу типа Integer со значением, равным 1 и передать в эту функцию.[На каком языке пишите код?
Если есть возможность использовать 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 ругается...
Подробное описание парметров LoadKeyboardLayout есть здесь
2. Если первое не поможет, то попробуйте использовать джавишный InputContext class для определения и переключения раскладок.
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#6
Отправлено 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 анонимных