1С 8.2 переключение раскладки клавиатуры (с помощью dynwrap.dll)

Функция для автоматического переключения раскладки клавиатуры. (с помощью dynwrap.dll)
Дабы не переключать каждый раз (при вводе информации в разных полях) с "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»);

23 Comments

  1. Diversus

    Может лучше использовать для таких целей Punto Switcher только он круче, он умеет сам определять нужно переключить клавиатуру при наборе или нет 🙂

    Reply ↓
  2. Serg23ru

    Может, я им не пользуюсь. Но пользователи которым я сделал средствами 1С очень довольны, хотя у одного из них есть Punto Switcher.

    Reply ↓
  3. ShantinTD

    Помню поставил я этот Пунто Свитчер на ноутбук себе… Одного дня не вытерпел — снес на фиг.

    Так что за топик ставлю плюс.

    Reply ↓
  4. TMV

    (3) ShantinTD, вы просто не умеете его готовить)

    Reply ↓
  5. smitti911

    Punto Switcher хорошая штука, надо просто немного настроить под себя и все 🙂

    Reply ↓
  6. ShantinTD

    Да был он у меня настроен. На настольном компе. А на ноутбук — замучился настраивать. Проще оказалось смотреть в монитор когда набираешь текст. Как возможную причину вижу неполноразмерную клавиатуру ноутбука или специальные клавиши на ней. Да и было это лет 6-7 назад. Хочется верить (но нет желания проверять), что с тех пор пунто свитчер стал умнее.

    Reply ↓
  7. yuraos

    (3) ShantinTD,

    ага…

    особенно после того как он тебе пароль с английского на русский «переведет»

    а там — набор матерных слов…без пробела.

    Reply ↓
  8. Virikus

    Допишите в описание, что длл-ка позволяет программно переключать клавиатуру.

    А то сразу не совсем понятно, чего она делает.

    Еще можно привести пример, типа: Реквизит ЛатНаименование должен заполняться только латинскими символами, соответственно перед редактирование переключаем раскладку.

    Reply ↓
  9. Abadonna

    Чем ставить DLL только ради переключения , да еще с регистрацией в реестре (а проблемки могут возникнуть с правами), проще поставить полнофункциональную ВК:

    Miracle Native — ВК для V8

    у которой в классе System есть методы «РУС» и «АНГЛ»

    Reply ↓
  10. ShantinTD

    (7) yuraos, про пароль это точно подмечено. Один знакомый до сих пор заходит в базу только с четвертого раза. 🙂 Благодаря пунто свитчеру. Кстати, тоже на ноутбуке.

    Да и что-то помнится как у него пунто свитчер «переводит» код на языке 1С (без пробелов то есть) на английский язык.

    Reply ↓
  11. andrewks

    метод был описан ещё сто лет назад на сером форуме

    Reply ↓
  12. andrewks
  13. andrewks

    ссылка на первоисточник не указана, длл-ка вложена в файлы для скачки (за $m)

    минусовать не буду, но недовольство выскажу

    Reply ↓
  14. webester

    Было же уже: http://infostart.ru/public/20466/

    Reply ↓
  15. Shrek2015

    мне тоже не нравится пунто свитчер 🙂

    Reply ↓
  16. MishaD

    (15) Им можно по разному пользоваться. Я автопереключение отключил, а пользуюсь переключением языка по правому CTRL(очень удобно), и ручным исправлением раскладки по Shift+Break.

    Reply ↓
  17. Sjawa2004

    (16) MishaD, Полностью согласен! Настройте правильно и будет вам счастье!!!

    Reply ↓
  18. vec435

    (9) Abadonna, в Miracle Native нужно добавлять еще какие-то методы по необходимости, а через dynwrap.dll можно получить к WinAPI

    Reply ↓
  19. Abadonna

    (18) vec435, в ней есть метод CallDLLMethod, а там «завинапишиться» можно по самые уши 😉

    Reply ↓
  20. mk314

    При регистрации dll с помощью regsvr32 ошибка — модуль dynwrap.dll загружен, но не удалось выполнить вызов DLLRegisterserver

    Reply ↓
  21. Serg23ru

    Может удалить из системы тот который был и поставить новый?

    Reply ↓
  22. dikd

    На Win2008Server 64bit DLL не регистрируется (((

    Reply ↓
  23. psa247

    (3) ShantinTD, и пароли Пунто хорошо палит)))) еще и в логи пишет

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *