AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2007, 09:55   #1  
Daido is offline
Daido
Участник
Аватар для Daido
 
105 / 10 (1) +
Регистрация: 13.07.2007
? Как переключить раскладку клавиатуры
Как правильно переключить раскладку клавиатуры ? с рус на англ или наоборот...
Старый 31.07.2007, 10:04   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
См. ф-цию LoadKeyboardLayout в MSDN
Старый 31.07.2007, 11:47   #3  
Daido is offline
Daido
Участник
Аватар для Daido
 
105 / 10 (1) +
Регистрация: 13.07.2007
?
X++:
client static void loadKeyboardLayout(MyFunctionKeyboardLayout bkl)
{
    DLL _dll = new DLL(#UserDLL);
    DLLFunction _keyboardLayout = new DLLFunction(_dll, #UserDLL_LOADKEYBOARDLAYOUT);
    ;
    _keyboardLayout.arg(ExtTypes::String, ExtTypes::DWord);
    switch(bkl)
    {
    case MyFunctionKeyboardLayout::en:
    _keyboardLayout.call('00000409' ,#KLF_ACTIVATE); //en
    break;
    case MyFunctionKeyboardLayout::ru:
    _keyboardLayout.call('00000419' ,#KLF_ACTIVATE); //ru
    break;
    }
    sleep(1000);
}
,
но не всегда срабатывает WinApi тупит? или что то не так?
Старый 31.07.2007, 12:39   #5  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
X++:
client static boolean setRUKeyboardLayout()
{
    #define.LANG_RUSSIAN("00000419")

    DLL         _winApiDLL      = new DLL('USER32');
    DLLFunction _loadKL         = new DLLFunction(_winApiDLL, "LoadKeyboardLayoutA");
    DLLFunction _activeKL       = new DLLFunction(_winApiDLL, "ActivateKeyboardLayout");
    Binary      bStr            = new Binary(10);
    ;

    bStr.string(#Offset0, #LANG_RUSSIAN);

    _loadKL.returns(ExtTypes::DWord);
    _loadKL.arg(ExtTypes::Pointer, ExtTypes::Word);

    _activeKL.returns(ExtTypes::DWord);
    _activeKL.arg(ExtTypes::DWord, ExtTypes::Word);

    if(_activeKL.call(_loadKL.call(bStr, 0), 0)) return true;
    else return false;

} // LoadKeyboardLayout
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
За это сообщение автора поблагодарили: Logger (1).
Старый 31.07.2007, 12:47   #6  
Daido is offline
Daido
Участник
Аватар для Daido
 
105 / 10 (1) +
Регистрация: 13.07.2007
на сколько понимаю тут только на русскии переключает
Цитата:
Сообщение от e@gle Посмотреть сообщение
X++:
client static boolean setRUKeyboardLayout()
{
    #define.LANG_RUSSIAN("00000419")

    DLL         _winApiDLL      = new DLL('USER32');
    DLLFunction _loadKL         = new DLLFunction(_winApiDLL, "LoadKeyboardLayoutA");
    DLLFunction _activeKL       = new DLLFunction(_winApiDLL, "ActivateKeyboardLayout");
    Binary      bStr            = new Binary(10);
    ;

    bStr.string(#Offset0, #LANG_RUSSIAN);

    _loadKL.returns(ExtTypes::DWord);
    _loadKL.arg(ExtTypes::Pointer, ExtTypes::Word);

    _activeKL.returns(ExtTypes::DWord);
    _activeKL.arg(ExtTypes::DWord, ExtTypes::Word);

    if(_activeKL.call(_loadKL.call(bStr, 0), 0)) return true;
    else return false;

} // LoadKeyboardLayout
на сколько понимаю тут только на русскии переключает ???
Старый 31.07.2007, 13:01   #7  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
на сколько понимаю тут только на русскии переключает ???
Да.
Я думаю несложно дописать и на англ. Используя исходный текст loadKeyboardLayout(...)
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 31.07.2007, 13:03   #8  
Daido is offline
Daido
Участник
Аватар для Daido
 
105 / 10 (1) +
Регистрация: 13.07.2007
Пасиб, вопрос снято!!!
Цитата:
Сообщение от e@gle Посмотреть сообщение
Да.
Я думаю несложно дописать и на англ. Используя исходный текст loadKeyboardLayout(...)
ну да
Старый 02.03.2011, 14:30   #9  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
В 2009 можно при помощи .Net API:
X++:
static void changeKeybordLayout(Args _args)
{
    #IsoCountryRegionCodes

    System.Windows.Forms.InputLanguage  tempLanguage = System.Windows.Forms.InputLanguage::get_CurrentInputLanguage();
    System.Windows.Forms.InputLanguage  ruLanguage   = System.Windows.Forms.InputLanguage::FromCulture(New System.Globalization.CultureInfo(#isoRU));
    ;
    
    System.Windows.Forms.InputLanguage::set_CurrentInputLanguage(ruLanguage);
    //теперь раскладка русская
    //..
    //восстанавливаем исходную раскладку
    System.Windows.Forms.InputLanguage::set_CurrentInputLanguage(tempLanguage);
}
За это сообщение автора поблагодарили: Romb (1), Logger (2), Ace of Database (3), vegorov (1), S.Kuskov (3), jeky (1), SergeyAY (0).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
код клавиатуры Daido DAX: Программирование 8 19.07.2007 10:26
Выбор значения из lookup + ввод с клавиатуры Lucky13 DAX: Программирование 29 25.05.2007 10:54
переключение раскладки клавиатуры artem DAX: Администрирование 9 16.04.2002 11:28

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:15.