Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Языковая раскладка - всё, что с этим связанно!!

7.4K
08 января 2009 года
T...H
159 / / 28.12.2008
Здарова программисты!!
Маленький вопросик: как определить, какие клавиши стоят в ПК для переключения раскладки языка (Shift+Alt или Ctrl+Shift или Ctrl+Shift+Alt и тому подобное).
И ещё: как узнать вообще какие языки используются в текущей операционке (XP)...(Например у меня только Russian и English). На многих других ещё и немецикий стоит и т.п. (Как узнать??)
Заранее спасибо!!
246
08 января 2009 года
GIZMO
1.8K / / 30.07.2004
Дафифа вернулся?
479
09 января 2009 года
Ухух
142 / / 05.05.2006
Сначало поругался, потом посмотрел и с ходу сам не нашел как переключить, но может вот это все же поможет - список куда надо заглянуть:

ActivateKeyboardLayout
GetAsyncKeyState
GetKeyboardLayout
GetKeyboardLayoutList
GetKeyboardState
GetKeyState
SetKeyboardState

наверняка что-то еще, но собственно, найдя описание этих функций, можно пройти по ссылкам на похожие
535
09 января 2009 года
Нездешний
537 / / 17.01.2008
Цитата:
как определить, какие клавиши стоят в ПК для переключения раскладки языка (Shift+Alt или Ctrl+Shift или Ctrl+Shift+Alt и тому подобное)


реестр HKEY_CURRENT_USER\Keyboard Layout\Toggle
параметр Hotkey
значения 1 - Alt + Shift
2 - Ctrl + Shift
3 - не определено
4 - `

Цитата:
как узнать вообще какие языки используются


 
Код:
int nSize = GetKeyboardLayoutList(0, NULL);

HKL *hkLayout = new HKL [nSize];
WORD *wLangId = new WORD [nSize];

GetKeyboardLayoutList(nSize, hkLayout);
for (int i = 0; i < nSize; i++)
{
     wLangId = LOWORD(hkLayout);
}

В массиве wLangId теперь находятся идентификаторы языков. Конкретные значения смотри в MSDN. Ищи по "language identifiers". Для примера:
0x0409 - English (United States)
0x0419 - Russian
0x0407 - German (Standart)
7.4K
09 января 2009 года
T...H
159 / / 28.12.2008
Цитата:
В массиве wLangId теперь находятся идентификаторы языков. Конкретные значения смотри в MSDN. Ищи по "language identifiers".


Правильно я использовал код, чтобы узнать wLangID??
------------------------------------------------------

Код:
int nSize = GetKeyboardLayoutList(0, NULL);

HKL *hkLayout = new HKL [nSize];
WORD *wLangId = new WORD [nSize];

GetKeyboardLayoutList(nSize, hkLayout);
for (int i = 0; i < nSize; i++)
{
     wLangId = LOWORD(hkLayout);
     Memo1->Lines->Add(wLangId);
}

Он вывел в Memo цифры: 1049, 1033.
-----------------------------------------------
Однако по-моему что-то не то. Как использовать эти цифры для переключения раскладки??
Цитата:
GetKeyboardLayout


по этому поводу я знаю такую штуку:
-----------------------Переключение на конк. язык:
LoadKeyboardLayout("00000409", KLF_ACTIVATE);// Английская
LoadKeyboardLayout("00000419", KLF_ACTIVATE);// Русская
----------------------------------------------------

Цитата:
ActivateKeyboardLayout


По этому поводу я нашёл ещё одну вещь:
----------------------Переключение на след.язык.
ActivateKeyboardLayout(0, 0);
--------------------------------------------------

Цитата:
реестр HKEY_CURRENT_USER\Keyboard Layout\Toggle


Пока ещё не изучал реестр. Встречный вопросик. Этот ключ реестра используется один и в Vista и в XP??
-----------------------------------------------------------

535
09 января 2009 года
Нездешний
537 / / 17.01.2008
Ппц!

Вывести список языков в мемо:
Код:
int nSize = GetKeyboardLayoutList(0, NULL);

HKL *hkLayout = new HKL [nSize];
WORD *wLangId = new WORD [nSize];

GetKeyboardLayoutList(nSize, hkLayout);
for (int i = 0; i < nSize; i++)
{
     wLangId = LOWORD(hkLayout);
     switch (wLangId)
     {
           case 0x0409: Memo1->Lines->Add("English (United States)");  break;
           case 0x0419: Memo1->Lines->Add("Russian");  break;
           case 0x0407: Memo1->Lines->Add("German (Standart)");  break;
     }    
}


Переключить раскладку:
 
Код:
ActivateKeyboardLayout(hkLayout[1], 0);
7.4K
09 января 2009 года
T...H
159 / / 28.12.2008
Цитата:
Вывести список языков в мемо:


круто, thank!, но для того, что бы узнать всё же, какие языки в системе (вдруг там будет турецкий гость, а у него на ПК ваще другие языки) необходимо сделать такую штуку не с тремя а со всеми....сколько их там, 144?? Больше?? Капец...
2.Я, например, вывел эту штуковину на Memo..( типа сделал полторы сотни строк)..Можно ли ... или нет, я вывел из в ListBox! Можно по клацанью на ,как говорится, Item's компонента, переключить вот, как вы показали,
ActivateKeyboardLayout(hkLayout[1], 0);
Вот этип способом?? :)

490
10 января 2009 года
frid-karatel
357 / / 15.09.2007
А подумать никак нельзя? Или надо еще один готовый код?
7.4K
10 января 2009 года
T...H
159 / / 28.12.2008
Цитата:
А подумать никак нельзя? Или надо еще один готовый код?


ну намекните,пожалуйста, а то в голову не лезет чёт даже... :(:(

246
11 января 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: T...H
ну намекните,пожалуйста, а то в голову не лезет чёт даже... :(:(



ща да просишься

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог