Форум программистов, компьютерный форум CyberForum.ru

Получить регистр и расскладку клавиатуры - C++

Восстановить пароль Регистрация
 
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
08.01.2014, 14:25     Получить регистр и расскладку клавиатуры #1
С помощью каких функций можно получить регистр и расскладку клавиатуры?

Такие варианты как приведены ниже не подходят.

C++
1
2
3
4
5
if(key = "q") return нижний регистр;
else (key = "Q") return верхний регистр;
 
if(key = "q") return английская расскладка;
else if(key = "й") return русская расскладка;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 14:25     Получить регистр и расскладку клавиатуры
Посмотрите здесь:

C++ Ввести с клавиатуры массив из N чисел (N также вводится с клавиатуры). Найти наименьший из его положительных элементов.
C++ Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры.
C++ Если первое из введенных с клавиатуры чисел А и В равно 5, то вычислить А+В, в противном случае получить А/В.
C++ Получить число по введенным с клавиатуры цифрам
C++ Ввод с клавиатуры массив из пяти целочисленных значений. Вывести их в одну строку через запятую. Получить для массива среднее арифметическое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
08.01.2014, 14:26     Получить регистр и расскладку клавиатуры #2
[C++] Return, с помощью ASCII.
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
08.01.2014, 14:39  [ТС]     Получить регистр и расскладку клавиатуры #3
Цитата Сообщение от Ryuk Посмотреть сообщение
[C++] Return, с помощью ASCII.
Спасибо, это кажется то, что мне и требовалось.

Добавлено через 10 минут
Почитал, но так и не понял как получить регистр и раскладку клавиатуры?
Использую функцию GetAsyncKeyState получаю ASCII номер клавиши.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
08.01.2014, 14:48     Получить регистр и расскладку клавиатуры #4
[C++] Return, в ASCII символы записаны по номерам. Например для поиска в строке заглавных букв нам достаточно проверить, есть ли в слове символ с кодом [65; 90], если же нужно проверить на буквы младшего регистра то [97; 122].

Добавлено через 1 минуту
Думаю тут будет разъяснено понятнее, да к тому же там есть конвертер.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
08.01.2014, 15:18     Получить регистр и расскладку клавиатуры #5
MapVirtualKey?
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
08.01.2014, 16:05  [ТС]     Получить регистр и расскладку клавиатуры #6
Как же все сложно.
Приведите пример использования функции проверки раскладки и регистра клавиатуры.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
08.01.2014, 18:51     Получить регистр и расскладку клавиатуры #7
Раскладка в текущем потоке:
C++
1
HKL layout = GetKeyboardLayout(0);
"Регистр клавиатуры" - это что? Регистр может быть у символа.
Что вообще дано и что надо получить?
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
09.01.2014, 12:47  [ТС]     Получить регистр и расскладку клавиатуры #8
Цитата Сообщение от Somebody Посмотреть сообщение
Раскладка в текущем потоке:
C++
1
HKL layout = GetKeyboardLayout(0);
"Регистр клавиатуры" - это что? Регистр может быть у символа.
Что вообще дано и что надо получить?
Консольное приложение, подобие кейлоггера.
Получаем нажатую клавишу с помощью функции GetAsyncKeyState, в консоль выводится нажатая клавиша, нам надо определить какая расскладка включена и какой регистр(верхний/нижний), далее это записать в лог.
Функция GetKeyboardLayout не работает правильно в консоли, она всегда выдает английский язык т.е. 1033
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 16:45     Получить регистр и расскладку клавиатуры
Еще ссылки по теме:

C++ Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
C++ Как получить сигнал с клавиатуры, если активно другое приложение
Замена нижнего регистра литер русского языка, вводимых с клавиатуры, на верхний регистр C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
09.01.2014, 16:45     Получить регистр и расскладку клавиатуры #9
Цитата Сообщение от [C++] Return Посмотреть сообщение
Получаем нажатую клавишу с помощью функции GetAsyncKeyState
Точно не помню, но, кажется, GetAsyncKeyState не работает, если фокус ввода у потока другого процесса.
Цитата Сообщение от [C++] Return Посмотреть сообщение
нам надо определить какая расскладка включена и какой регистр(верхний/нижний)
Раскладка у каждого потока своя - GetKeyboardLayout с указанием нужного потока. Получаемый символ зависит от других нажатых клавиш. Для английского/русского - разница только в регистре, но в общем случае там и другие штуки могут быть. Тут ToUnicodeEx.
Цитата Сообщение от [C++] Return Посмотреть сообщение
Функция GetKeyboardLayout не работает правильно в консоли, она всегда выдает английский язык т.е. 1033
Может быть, не для того потока её вызываешь? Все окна консолей вроде бы принадлежат потокам csrss или ещё чего-то там.
Вообще поставь хук на клавиатуру и не мучайся.
Yandex
Объявления
09.01.2014, 16:45     Получить регистр и расскладку клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 23:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru