Главная страница
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.012 c
6-17658
Viking
2002-02-21 16:58
2002.05.06
Проблема с IdPOP3


14-17702
Alx2
2002-03-28 10:24
2002.05.06
Ветка о русском языке нашла продолжение в правительстве


6-17649
VID
2002-02-17 02:10
2002.05.06
Самый трудный вопрос :))


4-17729
Slider-DSP
2002-02-23 14:31
2002.05.06
Как погасить монитор?


4-17749
chielo
2002-03-04 14:52
2002.05.06
Как програмно открыть CD