Как определить раскладку? |

14.03.2008, 20:45
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами:
10535289
Репутация:
107
|
|
Как определить раскладку?
Надо определить чем вводится текст кириллицей или латинецей.Естетвенно я знаю о GetLocaleInfo но оно как им некрути возращает только 0419  А мне нада както узнать вводится ли руский текст или английский.
|
|
|

14.03.2008, 20:56
|
|
Постоянный
Регистрация: 16.04.2007
Сообщений: 398
С нами:
10037186
Репутация:
1462
|
|
if GetKeyboardLayout(GetWindowThreadProcessId(GetFore groundWindow, null)) == 67699721
//раскладка английская
else
//раскладка НЕанглийская, например 68748313 соответствует русской
вроде так ...
|
|
|

14.03.2008, 21:13
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами:
10535289
Репутация:
107
|
|
Сообщение от Jes
if GetKeyboardLayout(GetWindowThreadProcessId(GetFore groundWindow, null)) == 67699721
//раскладка английская
else
//раскладка НЕанглийская, например 68748313 соответствует русской
вроде так ...
Мне нада это сделать в консольной проге.А GetWindowThreadProcessId насколько я понимаю без WinMain непокатит.
|
|
|

14.03.2008, 21:24
|
|
Новичок
Регистрация: 27.01.2008
Сообщений: 13
С нами:
9625751
Репутация:
26
|
|
Видимо правильнее сравнивать не возвращаемое значение, а его low word с индификатором раскладки. к примеру:
Код:
HKL hKl = GetKeyboardLayout(GetCurrentThreadId());
WORD id = LOWORD(hKl));
switch(id){
case 0x0419:break;//рус
case 0x0409:break;//анг
}
И если тебя надо знать раскладку только твоего приложения(с учетом того что оно однопоточное), используй GetCurrentThreadId() вместо GetWindowThreadProcessId()
и
The return value is the keyboard layout handle for the thread. The low word contains a locale identifier identifying the input language and the high word contains a device handle identifying the physical layout of the keyboard.
Последний раз редактировалось noobyara; 14.03.2008 в 21:34..
|
|
|

14.03.2008, 23:01
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами:
10042776
Репутация:
275
|
|
У меня подобный код показывает только раскладку по-умолчанию, а совсем не ту, которая включена. В чём может быть проблема?
|
|
|

15.03.2008, 00:45
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами:
10535289
Репутация:
107
|
|
Сообщение от Forcer
У меня подобный код показывает только раскладку по-умолчанию, а совсем не ту, которая включена. В чём может быть проблема?
Аналогично,сколько Alt+Shift неклацай выдает одно и тоже значение.
|
|
|

15.03.2008, 01:23
|
|
Новичок
Регистрация: 27.01.2008
Сообщений: 13
С нами:
9625751
Репутация:
26
|
|
Сообщение от _nic
Аналогично,сколько Alt+Shift неклацай выдает одно и тоже значение.
просто у вас консольное приложение, там система ввода-вывода по другому устроена и код написанный выше, будет работать только с оконным приложением..
|
|
|

15.03.2008, 09:48
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами:
10139366
Репутация:
1502
|
|
Придумал гениальный способ:
читаешь символы, после этого:
if (('a' < ch) and (ch < 'z')) or (('A' < ch) and (ch < 'Z')) then
// английская раскладка
else
// русская...
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

15.03.2008, 12:15
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
С нами:
10535289
Репутация:
107
|
|
Сообщение от desTiny
Придумал гениальный способ:
читаешь символы, после этого:
if (('a' < ch) and (ch < 'z')) or (('A' < ch) and (ch < 'Z')) then
// английская раскладка
else
// русская...
Не махлюй надо средствами WinAPI 
|
|
|

15.03.2008, 23:01
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами:
10139366
Репутация:
1502
|
|
Сообщение от _nic
Не махлюй надо средствами WinAPI 
А ето что?
ReadConsoleA, потом проверяешь то что счситал=)
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Как определить ip по аське
|
|
Skype, IRC, ICQ, Jabber и другие IM |
2 |
03.09.2004 08:43 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|