Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

Как определить текущий регистр клавиатуры: русский или английский   Найти похожие ветки 

 
Владимир2   (2002-04-23 14:21) [0]

Из программы.
Это нужно для того,чтобы в отклике "OnKeyDown" определить символ нажатой совместно с ALT или CTRL клавиши. Как сделать это напрямую никто и нигде мне подсказать не смог.
Надежда получить конкретный ответ на мой вопрос мала, но всё-же ...


 
Song ©   (2002-04-23 14:50) [1]

GetKeyboardLayout()
GetKeyboardLayoutName()


 
PaRL ©   (2002-04-23 14:51) [2]


> Надежда получить конкретный ответ на мой вопрос мала, но
> всё-же ...

Вы хоть FAQ иногда смотрите?


 
Владимир2   (2002-04-23 18:35) [3]

Большое спасибо Song и PaRL за отклик. Ответ на этот мой вопрос я получил.
А есть ли более простой способ в "OnKeyDown" определить символ нажатой совместно с ALT или CTRL клавиши? Т.е. мне нужно в символьную переменную получить символ "U" или "Г", в зависимости от раскладки, если нажаты клавиши (ALT или CTRL)+(U).
Спасибо.


 
Cobalt ©   (2002-04-23 18:54) [4]

А там (в OnKeyDown) кажется есть такой параметр sShiftState - там хранятся состояния Ctrl, Alt и Shift. А в Key - сам символ.


 
Malder ©   (2002-04-23 18:57) [5]

Используй событие OnKeyPress. Там передается var Key: Char то есть именно символ Char. Если раскладка русская, то при нажатии на "i" Key будет равен "ш"


 
Malder ©   (2002-04-23 19:11) [6]

Cobalt, нет. В событии OnKeyDown передается виртуальый код нажатой клавиши - и он не различает кодировок.
Поэтому нужно использовать OnKeyPress, но тоже проблема. В это событие не передается параметр Shift. То есть, не определишь нажат Alt, Ctrl иил нет...


 
Malder ©   (2002-04-23 19:12) [7]

Cobalt, нет. В событии OnKeyDown передается виртуальый код нажатой клавиши - и он не различает кодировок.
Поэтому нужно использовать OnKeyPress, но тоже проблема. В это событие не передается параметр Shift. То есть, не определишь нажат Alt, Ctrl или нет...


 
Song ©   (2002-04-23 21:06) [8]

2Malder © (23.04.02 19:12), Владимир2 (23.04.02 18:35)
Для опредедения Shift"а, а также любых других клавиш можно использовать в onKeyPress GetKeyboardState() или GetAsyncKeyState()


 
Владимир2   (2002-04-23 21:33) [9]

В том-то и дело, уважаемые коллеги, что OnKeyDown даёт один и тот же символ при разной раскладке, а OnKeyPress даёт правильный символ только, если нет Shift"а: если ALT, то в него совсем не попадаешь (это понятно), а если CTRL, то при любой раскладке будет одинаковый непонятный символ.
Поэтому вопрос не так прост, как казался вначале.
Спасибо всем.




Страницы: 1 вся ветка

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
7-17721
mormot
2002-02-05 05:15
2002.05.06
Печать на рулоне


4-17753
fag2000@ok.ru
2002-03-04 17:34
2002.05.06
Как лучше сделать: глобальные hook и на клаву и мышь в 1 dll или в 2 разных?


3-17468
Johnmen
2002-04-11 11:05
2002.05.06
Оперативная перерисовка DBGrid а


14-17668
VictorT
2002-02-20 16:47
2002.05.06
Игрушка для програмиста


1-17643
СергейПд
2002-04-23 13:17
2002.05.06
Qreport и shapes