Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2012, 11:25   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Есть вопрос по поводу переключения раскладки клавиатуры

После того как перешел на Windows 7 заметил странную вещь, при программном переключении раскладки клавиатуры возникает задержка около 1 секунды (на XP переключалась быстро). Во вложении пример. Подскажите, если не затруднит, каким образом можно ускорить переключение? Пробовал Application.Processmessages, однако в этом случае язык не успевает переключится а ввод уже происходит на том же языке...
Вложения
Тип файла: zip Переключение языков.zip (217.9 Кб, 15 просмотров)
Dux вне форума Ответить с цитированием
Старый 19.06.2012, 13:09   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

В Вашем примере вроде всё нормально работает. У Вас там и вводить текст то некуда.
FaTaL вне форума Ответить с цитированием
Старый 19.06.2012, 13:19   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
В Вашем примере вроде всё нормально работает. У Вас там и вводить текст то некуда.
Да здесь и не надо ничего вводить. Это просто пример переключения. У Вас есть задержка при переключении? или это происходит моментально?
Dux вне форума Ответить с цитированием
Старый 19.06.2012, 21:42   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Ровно столько же как и по нажатию CTRL+SHIFT
FaTaL вне форума Ответить с цитированием
Старый 20.06.2012, 10:47   #5
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Ровно столько же как и по нажатию CTRL+SHIFT
Да в том то и дело, что нет. При нажатии ctrl+shift происходит быстрее, в этом то и проблема. У вас какой Delphi / Windows? Хочу разобраться от чего это происходит.

Я работаю с Delphi 2007, Windows 7 (x32).
Dux вне форума Ответить с цитированием
Старый 20.06.2012, 11:37   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

У меня Delphi XE2 SP4 и Windows 7 Ultimate SP1 Rus x86. Но я никак не могу понять что Вы хотите сделать? Ведь Ваш код переключения раскладки влияет только на поток Вашей программы.
FaTaL вне форума Ответить с цитированием
Старый 20.06.2012, 11:54   #7
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
У меня Delphi XE2 SP4 и Windows 7 Ultimate SP1 Rus x86. Но я никак не могу понять что Вы хотите сделать? Ведь Ваш код переключения раскладки влияет только на поток Вашей программы.
Попробую объяснить, в чем именно я пытаюсь разобраться. Во вложении новый пример (добавил поле Edit).

Так вот, при переключении языков (нажимайте кнопки) поле Edit появляется и исчезает с большой задержкой. Если же удалить строчки
Код:
LoadKeyboardLayout('00000419', KLF_ACTIVATE);
и
Код:
LoadKeyboardLayout('00000409', KLF_ACTIVATE);
то поле Edit отображается мгновенно - вот этого я и хочу добиться при переключении языков.
Вложения
Тип файла: zip Переключение языков.zip (229.0 Кб, 4 просмотров)
Dux вне форума Ответить с цитированием
Старый 20.06.2012, 13:24   #8
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Снова вопрос. На какой оно Вам нужно сначала прятать едит, потом его показывать? Просто не прячьте его и всё. Или дайте конкретную задачу, что именно вы хотите реализовать в своём проекте.
А то что Вы видите задержку переключения, так это сама винда так переключение осуществляет. Нажмите например сочетание клавиш переключения раскладки (у меня CTRL+SHIFT) и следите за индикатором языка в трее. Там тоже происходит задержка. Короче чтобы Вам помочь, нужно точно знать что Вы хотите сделать.
FaTaL вне форума Ответить с цитированием
Старый 03.07.2012, 17:49   #9
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Снова вопрос. На какой оно Вам нужно сначала прятать едит, потом его показывать?
Вопрос не в edit.В примере я просто хотел показать Вам задержку переключения. Дело в том, что если Вы запустите этот пример на XP - задержки нет.
Так вопрос, как от нее избавиться в Win 7. И откуда она вообще взялась?
Dux вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена раскладки клавиатуры D_E_N Общие вопросы Delphi 2 17.05.2009 00:26
Определение раскладки клавиатуры micaell Win Api 2 14.03.2009 23:43
Мини-утилита для переключения раскладки SublimeYe Свободное общение 4 03.07.2008 22:29
Смена раскладки клавиатуры NoName_emaNoN Общие вопросы Delphi 10 28.05.2008 08:55