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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2008, 16:11   #1
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Вопрос Смена раскладки клавиатуры

Всем привет! Такая ситуация: есть кнопка, на которой изображена текущая раскладка клавиатуры, при нажатии меняется на другую, исходя из текста "бывшего" языка переключает на другой. Переключать умею, считывать умею, но одна проблема: если пользователь сам, сочетанием клавиш переключит раскладку клавы, то текст то на кнопке останется тот же и при нажатии на кнопку... короче несостыковка выйдет. Вопрос: Как узнать что раскладка была переключена пользователем? Может есть сообщение от винды? Я знаю что можно реализовать это таймером, но неохото его гонять и тратить процессорные ресурсы, ибо и так мало
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 26.05.2008, 16:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

WM_INPUTLANGCHANGEREQUEST
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2008, 16:47   #3
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
WM_INPUTLANGCHANGEREQUEST
Не работает...
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 26.05.2008, 17:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не работает...
Потому что: The WM_INPUTLANGCHANGEREQUEST message is posted to the application's top-level window
Надо хук ставить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2008, 17:28   #5
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Потому что: The WM_INPUTLANGCHANGEREQUEST message is posted to the application's top-level window
Надо хук ставить.
Ээээ... фразу на ангийском как понимать?

о... а без хука не обойтись?) А то я с хуками не очень...) Или хотябы подкажите как ставить, если можно...
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 27.05.2008, 08:27   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

LoadKeyBoardLayout('00000419',KLF_A CTIVATE) русская
LoadKeyBoardLayout('00000409',KLF_A CTIVATE) енглиш
SERG1980 вне форума Ответить с цитированием
Старый 27.05.2008, 09:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
фразу на ангийском как понимать?
Это значит что это сообщение придет только окну на переднем плане.

По поводу хука ты пройдись по форуму тут уже обсуждалось много раз, чего мне повторяться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2008, 11:01   #8
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Радость

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это значит что это сообщение придет только окну на переднем плане.

По поводу хука ты пройдись по форуму тут уже обсуждалось много раз, чего мне повторяться.
То что окну на переднем плане знакомо... при считывании нажатий мультимедийных клавиш точно такое же было. Но здесь ситуация немного иная: Здесь же для каждого окна свой язык, т.е. если перевожу язык, то перевожу для конкретного окна. Т.е. язык в окне программы изменится только в том случае если оно активно и нажато сочетание клавиш. Т.е. выходит что нам только окно на переднем плане и нужно... вот...

А суть в том что даже окну на переднем плане сообщение не приходит...
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 27.05.2008, 11:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А суть в том что даже окну на переднем плане сообщение не приходит...
Глупости.
Скажи еще что это не работает:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  procedure q(var w:tagMSG); message WM_INPUTLANGCHANGEREQUEST;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.q(var w: tagMSG);
begin
caption:='d';
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2008, 01:07   #10
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Хорошо

Цитата:
Сообщение от Stilet Посмотреть сообщение
Глупости.
Скажи еще что это не работает:
...
Работает Я за место типа "tagMSG" использовал "TMessage". Кстати а как вообще понять какой тип когда использовать?

А как насчёт того что хук обязательно ставить или нет? Ведь пользователь может перевести язык в моём приложении только когда его окно активно, т.е. всё работает, или я не прав?
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена ОС на ноутбуке ryton Операционные системы общие вопросы 28 03.02.2013 13:49
Мини-утилита для переключения раскладки SublimeYe Свободное общение 4 03.07.2008 22:29
Смена разрешения san72 Помощь студентам 0 04.06.2008 15:50
Смена реферала friz Работа с сетью в Delphi 1 10.04.2008 08:37
Смена датацентра Alar О форуме и сайтах клуба 2 14.08.2007 12:20