Дабы не переключать каждый раз (при вводе информации в разных полях) с "Rus" на "Eng", можно эту работу возложить на функцию.
Мэханизм работает так:
1) регистрируем dll-ку в операционке:
regsvr32.exe «C:WINDOWSsystem32dynwrap.dll»
2) Создаем функцию на сервере:
Функция ПереключитьРаскладкуDW(Имя) Экспорт
Попытка
Wrapper = новый COMОбъект(«DynamicWrapper»);
Wrapper.Register(«USER32.DLL», «ActivateKeyboardLayout», «i=ll», «f=s», «r=l»);
Wrapper.Register(«USER32.DLL», «LoadKeyboardLayout», «i=sl», «f=s», «r=t»);
Исключение
Возврат Истина;
КонецПопытки;
SRus = «00000419»;
SEng = «00000409»;
NRus = 1049;
NEng = 1033;
Попытка
Если Нрег(Имя) = Нрег(«Rus») тогда
Wrapper.LoadKeyboardLayout(SRus, 1);
Wrapper.ActivateKeyboardLayout(NRus, 0);
Иначе
Wrapper.LoadKeyboardLayout(SEng, 1);
Wrapper.ActivateKeyboardLayout(NEng, 0);
КонецЕсли;
возврат Ложь;
Исключение
Возврат Истина;
КонецПопытки;
КонецФункции
3) Запускаем функцию (в моем случае при открытии формы справочника):
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//переключим раскладку на английскую
Раскл = ФункцииНасервере.ПереключитьРаскладкуDW(«Eng»);
КонецПроцедуры
Для возврата обратно на русскую пишем:
Раскл = ФункцииНасервере.ПереключитьРаскладкуDW(«Rus»);
Может лучше использовать для таких целейPunto Switcher только он круче, он умеет сам определять нужно переключить клавиатуру при наборе или нет 🙂
Может, я им не пользуюсь. Но пользователи которым я сделал средствами 1С очень довольны, хотя у одного из них есть Punto Switcher.
Помню поставил я этот Пунто Свитчер на ноутбук себе… Одного дня не вытерпел — снес на фиг.
Так что за топик ставлю плюс.
(3) ShantinTD, вы просто не умеете его готовить)
Punto Switcher хорошая штука, надо просто немного настроить под себя и все 🙂
Да был он у меня настроен. На настольном компе. А на ноутбук — замучился настраивать. Проще оказалось смотреть в монитор когда набираешь текст. Как возможную причину вижу неполноразмерную клавиатуру ноутбука или специальные клавиши на ней. Да и было это лет 6-7 назад. Хочется верить (но нет желания проверять), что с тех пор пунто свитчер стал умнее.
(3) ShantinTD,
ага…
особенно после того как он тебе пароль с английского на русский «переведет»
а там — набор матерных слов…без пробела.
Допишите в описание, что длл-ка позволяет программно переключать клавиатуру.
А то сразу не совсем понятно, чего она делает.
Еще можно привести пример, типа: Реквизит ЛатНаименование должен заполняться только латинскими символами, соответственно перед редактирование переключаем раскладку.
Чем ставить DLL только ради переключения , да еще с регистрацией в реестре (а проблемки могут возникнуть с правами), проще поставить полнофункциональную ВК:
Miracle Native — ВК для V8
у которой в классе System есть методы «РУС» и «АНГЛ»
(7) yuraos, про пароль это точно подмечено. Один знакомый до сих пор заходит в базу только с четвертого раза. 🙂 Благодаря пунто свитчеру. Кстати, тоже на ноутбуке.
Да и что-то помнится как у него пунто свитчер «переводит» код на языке 1С (без пробелов то есть) на английский язык.
метод был описан ещё сто лет назад на сером форуме
ссылка на первоисточник не указана, длл-ка вложена в файлы для скачки (за $m)
минусовать не буду, но недовольство выскажу
Было же уже:http://infostart.ru/public/20466/
мне тоже не нравится пунто свитчер 🙂
(15) Им можно по разному пользоваться. Я автопереключение отключил, а пользуюсь переключением языка по правому CTRL(очень удобно), и ручным исправлением раскладки по Shift+Break.
(16) MishaD, Полностью согласен! Настройте правильно и будет вам счастье!!!
(9) Abadonna, в Miracle Native нужно добавлять еще какие-то методы по необходимости, а через dynwrap.dll можно получить к WinAPI
(18) vec435, в ней есть метод CallDLLMethod, а там «завинапишиться» можно по самые уши 😉
При регистрации dll с помощью regsvr32 ошибка — модуль dynwrap.dll загружен, но не удалось выполнить вызов DLLRegisterserver
Может удалить из системы тот который был и поставить новый?
На Win2008Server 64bit DLL не регистрируется (((
(3) ShantinTD, и пароли Пунто хорошо палит)))) еще и в логи пишет