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

Фотография

Проблема с кириллицей


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

#1 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 06 октября 2004 - 10:31

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

Как можно решить данную проблему? Т. е. как определить раскладку на данный момент и, соответсвенно, переключить её в руссифицированный режим? Или может есть совсем другой алгоритм?
  • 0

#2 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 06 октября 2004 - 13:53

В taskbar'е ведь висит указатель RU/EN? Можно попробовать в начало скрипта положить код, который будет брать свойства этого элемента и определять раскладку на текущий момент. Смена - просто команда на выполнение нажатия клавиш типа Ctrl+Shift или Alt+Shift в зависимости от того как вы переключаете раскладку. Можно поступить еще проще - тупо записать действия по принудительному выставлению русского языка через эту переключалку.
  • 0
Дмитрий Шевченко

HP Software

#3 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 06 октября 2004 - 13:59

А может и не висеть
У всех машины настроены по разному, а тем более тестовые станции
Мне такой вариант тоже первым в голову пришел, но как то не хочется привязываться к настройкам конкретной машины.
Существуте какой более универсальный метод?
  • 0

#4 Dmitry_NJ

Dmitry_NJ

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 3 122 сообщений
  • ФИО:Дмитрий Шевченко
  • Город:New Jersey, USA

Отправлено 06 октября 2004 - 14:25

У всех машины настроены по разному, а тем более тестовые станции

Тестовые станции как раз легче всего привести к единому стандарту - что и как там должно быть установлено. Универсальный подход - открываете Notepad (или он тоже не везде установлен? тогда в самом тестируемом приложении) и вводите любое слово. Потом считываете его и сравниваете с эталонным "русским" словом. Если сравнение успешно - значит раскладка русская.
  • 0
Дмитрий Шевченко

HP Software

#5 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 08 октября 2004 - 08:56

И все таки есть универсальный способ, проблема решается так же как и с CQ
В форуме уже было представлено решение применительно к CQ, попробовал - работает и для Робота

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1252"="c_1251.nls"

и не надо гонять бедного Робота с лишними задачами по тулбару:))
  • 0

#6 Viktor

Viktor

    Активный участник

  • Members
  • PipPip
  • 142 сообщений

Отправлено 08 октября 2004 - 09:23

А как же "У всех машины настроены по разному, а тем более тестовые станции" ?
  • 0
Виктор, Еретик РУПа

Нельзя обсуждать здесь ересь, если только мы не размышляем, как ее уничтожить.

#7 serega

serega

    Опытный участник

  • Members
  • PipPipPipPip
  • 355 сообщений
  • Город:Москва

Отправлено 08 октября 2004 - 10:03

Мне казалось этот форум посвящен решению проблем, связанных с Rational Tools
  • 0

#8 Viktor

Viktor

    Активный участник

  • Members
  • PipPip
  • 142 сообщений

Отправлено 08 октября 2004 - 10:10

Мне казалось этот форум посвящен решению проблем, связанных с Rational Tools

За решение, безусловно, спасибо :)
Только способ, возможно, не совсем универсальный?
  • 0
Виктор, Еретик РУПа

Нельзя обсуждать здесь ересь, если только мы не размышляем, как ее уничтожить.

#9 Гость_Sam_*

Гость_Sam_*
  • Guests

Отправлено 21 января 2005 - 10:26

Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long

Global Const HKL_NEXT = 1
Global Const HKL_PREV = 0
Global Const KLF_REORDER = &H8

Sub МоеИмяПроцедуры()
Dim lCodeKeybord As Long
Dim CodeKeybord As Long
lCodeKeybord = GetKeyboardLayout(CodeKeybord)
If lCodeKeybord = 67699721 Then 'если английский, то все нормально

'Выполняем необходимые действия

Else 'если нет, то переключаем на английский
'в моем случае и выполняем необходимые действия

Call ActivateKeyboardLayout(HKL_NEXT, KLF_REORDER)
'Выполняем необходимые действия

'Переключаем на предыдущую раскладку, в моем случае русская
Call ActivateKeyboardLayout(HKL_PREV, KLF_REORDER)

End If


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

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