Вот есть консольное приложение в WinXP, и хочеться мне узнать, какая раскладка клавы сейчас стоит?
ну типа EN || RU? есть соображения? не из под консольных могу, а вот с консолью че-то не хотит падла.
кстати, функции API
GetKeyboardLayout()
GetKeyboardLayoutName()
не канают, ну не возвращают они в консоли правильный результат!
Здравствуйте, Аноним, Вы писали:
А>Че? Никто не знает??? ау! млин.
Все уже давно пьяные в стельку под столами валяются...
Имею скафандр — готов путешествовать!
Re[3]: узнать, какая раскладка клавы сейчас стоит
От:
Аноним
Дата:
29.05.04 06:36
Оценка:
Здравствуйте, rus blood, Вы писали: RB>Все уже давно пьяные в стельку под столами валяются...
Дак что же это за безобразие-то такое. Эээ-эх! я весь MSDN облазил, и там и сям, черт...
если кто-то знает, скажите. \волшебное слово\ Плиииизззззз.
Re: узнать, какая раскладка клавы сейчас стоит
От:
Аноним
Дата:
31.05.04 07:53
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос.
А>Вот есть консольное приложение в WinXP, и хочеться мне узнать, какая раскладка клавы сейчас стоит? А>ну типа EN || RU? есть соображения? не из под консольных могу, а вот с консолью че-то не хотит падла.
А>кстати, функции API А>
GetKeyboardLayout()
А>GetKeyboardLayoutName()
А>не канают, ну не возвращают они в консоли правильный результат!
Верно, они всегда одно и то же возвращают. По-моему, надо, как много лет назад, клавиатурный драйвер, работающий в консоли, изучить. Он должен висеть на int9/int16
Re[4]: узнать, какая раскладка клавы сейчас стоит
От:
Аноним
Дата:
01.06.04 04:22
Оценка:
Поднимаю тему вверх, т.к. не могу найти решения. Облазил уже многое.
Люди добрые, ну хоть совет дайте какой-нить, не могу из консоли узнать
какая раскладка активная, RU или EN???
А>Поднимаю тему вверх, т.к. не могу найти решения. Облазил уже многое. А>Люди добрые, ну хоть совет дайте какой-нить, не могу из консоли узнать А>какая раскладка активная, RU или EN???
char keybd[KL_NAMELENGTH];
GetKeyboardLayoutName(keybd);
switch(atoi(keybd))
{
case 409:
lblLang->Caption = "EN"; // английский
break;
case 419:
lblLang->Caption = "RU"; // русский
break;
}
В свою очередь поднимаю тему вверх, ибо ничего из вышеприведённого не работает. Пишу свою прожку-переключалку клавиатуры, и такой вот затык с консолью — ни получение текущей раскладки, ни переключение раскладки на другую не работают. С переключением ещё кое-как исхитрился через WM_INPUTLANGCHANGEREQUEST, но вот как определить текущую раскладку — совершенно непонятно. Ни один из вышеприведённых способов не работает — все как один сообщают, что раскладка английская, независимо от того, какая она на самом деле. Неужто вообще не существует никакого способа это узнать?
Здравствуйте, Аноним, Вы писали:
А>Собственно вопрос.
А>Вот есть консольное приложение в WinXP, и хочеться мне узнать, какая раскладка клавы сейчас стоит? А>ну типа EN || RU? есть соображения? не из под консольных могу, а вот с консолью че-то не хотит падла.
А>кстати, функции API А>
GetKeyboardLayout()
А>GetKeyboardLayoutName()
А>не канают, ну не возвращают они в консоли правильный результат!
А>Вот есть консольное приложение в WinXP, и хочеться мне узнать, какая раскладка клавы сейчас стоит? А>ну типа EN || RU? есть соображения? не из под консольных могу, а вот с консолью че-то не хотит падла. А>кстати, функции API А>
GetKeyboardLayout()
А>GetKeyboardLayoutName()
А>не канают, ну не возвращают они в консоли правильный результат!
Консольное окно реально принадлежит другому процессу (csrss) и потоку (а GetWindowThreadProcessId на него на самом деле безбожно врут). Отсюда видимо и такой баг.