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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2007, 08:58   #1
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию Раскладка клавиатуры

Как отловить изменение раскладки клавы (ru/en или en/ru)
SERG1980 вне форума Ответить с цитированием
Старый 31.05.2007, 09:10   #2
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var Layout: array [0.. KL_NAMELENGTH] of char;
begin 
GetKeyboardLayoutName(Layout); 
if Layout = '00000409' then label1.caption:='en' 
else label1.caption:='ru';
end;
А вообще правильнее было отлавливать через хуки сообщение
WM_INPUTLANGCHANGEREQUEST
НЕ_АЙС вне форума Ответить с цитированием
Старый 31.05.2007, 10:08   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Cпасибо НЕ_АЙС, а через хуки не знаешь как это сделать?
SERG1980 вне форума Ответить с цитированием
Старый 31.05.2007, 10:21   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

WM_INPUTLANGCHANGEREQUEST
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 05.07.2010, 10:41   #5
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Как правильно этот хук поставить? Побывал так, что-то не работает…

Код:
library Hook;

uses
  Windows,
  Messages;

var
  LangHook: HHook = 0;

  function SysMsgProc(code:integer; wParam, lParam: DWORD):DWORD;stdcall;
  begin
   MessageBox(0,'You in RunStopHook SysMsgProc', 'Message by Hook library', 0);
   CallNextHookEx(LangHook, Code, wParam, lParam);
   if code=HC_ACTION then
   begin
    MessageBox(0,'Lang is Change', 'Message by Hook library', IdOk);
   end;
  end;

  procedure RunStopHook(State: Boolean) export; stdcall;
  begin
   if State then
   begin
    LangHook:=SetWindowsHookEx(WM_INPUTLANGCHANGEREQUEST, @SysMsgProc, HInstance, 0);
    MessageBox(0,'You in RunStopHook procedure', 'Message by Hook library', 0);
   end
   else
    begin
     UnhookWindowsHookEx(LangHook);
     LangHook:=0;
    end;
  end;

  exports RunStopHook index 1;

begin
end.
Gerzs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват клавиатуры Ferro Общие вопросы Delphi 3 25.03.2010 21:02
имитация клавиатуры Var17 Win Api 3 17.06.2008 14:28
Раскладка Cabal777 Помощь студентам 3 23.12.2007 15:45
Проверка – является ли раскладка клавиатуры правильной для вводимого текста Xandr Общие вопросы Delphi 7 02.11.2007 09:25
Раскладка клавиатуры Reindeer Общие вопросы Delphi 10 21.03.2007 22:28