| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Текущая раскладка клавиатуры |
| Автор: Rodman 3.9.2006, 22:18 |
| Дароф. Кто нить может мне подсказать как считать программно какой язык включен (русский, английский и т.д.)... от отловить переключение (не зависимо от того как человек переключается - на Ctrl+Shift или Alt+Shift)... Спасибо... |
| Автор: Lence 3.9.2006, 22:53 | ||
определяешь через GetKeyboardLayoutName(Lang) ; какие цифры на конце
|
| Автор: Rodman 3.9.2006, 23:18 |
| Спасибо, но вот второй вопрос был.... Есть ли какой нить сигнал который можно перехватить при переключении (Ctrl+Shift или Alt+Shift)???? Или проверять оба варианта??? |
| Автор: Rodman 3.9.2006, 23:47 |
| Я понимаю что можно повесить на клавиши, но а если перемена языка произойдет с помощью мышки, то я не отслежу это... так что как-то необходимо перехватить сигнал??? но я не могу пока понять как это сделать??? |
| Автор: Fedia 4.9.2006, 06:20 | ||||
Перехватить изменение раскладки клавиатуры можно в Application.OnMessage, перехватывая сообщение WM_INPUTLANGCHANGEREQUEST. Примерно так:
|
| Автор: Rodman 4.9.2006, 18:38 | ||
А если к примеру я буду проверять раскладку при вводе, то мне необходимо
или я не правильно понял перехват??? |
| Автор: Alexeis 4.9.2006, 20:49 | ||||
Угу Fedia показал метод перехвата изменения раскладки в тот момент когда она реально производится. Application.OnMessage:=AppMsg; - имеет смысл присваивать в обработчике onCreate формы в
имеет смысл вставить
т.е. определение какую раскладку установили (в тот момент когда установили, поскольку сообщение прийдет сразу после изменения раскладки) |
| Автор: Yanis 5.9.2006, 13:30 |
| Rodman Отслеживать изменение нужно в своём приложении или вообще в системе, независимо от того активна программа или нет? |
| Автор: Rodman 6.9.2006, 11:55 |
| Отследить мне нужно только во время работы моего приложения, конкретно во время ввода пароля... Как в WebMoney... во время ввода возле поля высвечивается текущий язык... |
| Автор: Yanis 6.9.2006, 12:01 | ||
Для отображения текущего языка можно просто проверять его в OnIdle, если ты об этом. |
| Автор: Alexeis 6.9.2006, 12:03 | ||||
тогда
надо присвоить сразу после создания (показа) дилога (панели) для ввода пароля. И
после завершения оперции (успешного входа) |
| Автор: Rodman 6.9.2006, 13:14 |
| А если во время ввода произойдет смета раскладки??? |
| Автор: Alexeis 6.9.2006, 13:17 | ||
Rodman, тогда сработает обработчик
В нем вместо ShowMessage('Изменилась раскладка клавиатуры'); надо вставить код который будет возвращать старую раскладку или все что еще так понадобится. |
| Автор: Rodman 6.9.2006, 13:23 | ||
ОК.... т.е. как я понял на Edit1.OnChange необходимо повесить
Так??? |
| Автор: Yanis 6.9.2006, 13:25 |
| Rodman Тебе объяснять, что в пустой колодец лить. Сказали же, что в OnCreate. |
| Автор: Alexeis 6.9.2006, 13:39 |
| Yanis, Я думаю что ему вначале надо почитать, что такое сообщения вообще, как они отсылаются, почему отсылаются и как принимаются и обрабатываются. Добавлено @ 13:41 Надо открыть любой учебник по Windows и прочитать хотя бы первую главу. |
| Автор: Yanis 6.9.2006, 14:39 | ||
Уточнение. Учебник по программированию! |
| Автор: Rodman 6.9.2006, 16:09 |
| Ну не надо драматизировать. Все когда то начинали, и не у всех все получалось... Я задал такой вопрос, - "Куда добавлять" потому что OnCreate как Вы знаете выполняется 1 раз, а смена языка может производится неоднократно... |
| Автор: Alexeis 6.9.2006, 16:14 | ||
Мы совсем не драматизируем, все нормально. Просто чтоб начать програмировать под на Delphi необходимо выучить основы програмирования под Windows (хотя бы принципы). Это займет на самом деле часа 3-4, а потом уже многое станет ясным само по себе |