|
31.07.2007, 09:55 | #1 |
Участник
|
Как переключить раскладку клавиатуры
Как правильно переключить раскладку клавиатуры ? с рус на англ или наоборот...
|
|
31.07.2007, 10:04 | #2 |
Участник
|
См. ф-цию LoadKeyboardLayout в MSDN
|
|
31.07.2007, 11:47 | #3 |
Участник
|
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 |
MCTS
|
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 |
Участник
|
на сколько понимаю тут только на русскии переключает
Цитата:
Сообщение от 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 |
MCTS
|
Цитата:
на сколько понимаю тут только на русскии переключает ???
Я думаю несложно дописать и на англ. Используя исходный текст loadKeyboardLayout(...)
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
31.07.2007, 13:03 | #8 |
Участник
|
Пасиб, вопрос снято!!!
|
|
02.03.2011, 14:30 | #9 |
Молодой, подающий надежды
|
В 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). |
|
Похожие темы | ||||
Тема | Ответов | |||
код клавиатуры | 8 | |||
Выбор значения из lookup + ввод с клавиатуры | 29 | |||
переключение раскладки клавиатуры | 9 |
|