Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Вниз

Как отловить раскладку клавиатуры   Найти похожие ветки 

 
Z_man7777   (2003-02-26 12:42) [0]

Здравствуйте, уважаемые Мастера!!!
Есть вопрос: Как отловить раскладку клавиатуры, выбранную в текущий момент и передать ее в приложение. Например, вывести сообщение о текущей раскладки.


 
Clickmaker   (2003-02-26 12:48) [1]

type TYourForm = class(TForm)
private
procedure WMSetKBLayoutName(var Message: TMessage); message
WM_SETKBLAYOUTNAME;
...
end;

function MyShellProc(code: integer; wParam: integer; lParam: Longint): Longint; stdcall;
begin
if (code = HSHELL_LANGUAGE) then
SendMessage(GetForegroundWindow, WM_SETKBLAYOUTNAME, wParam, lParam);
Result := CallNextHookEx(Hook, code, wParam, lParam);
end;

procedure SetKBLayoutHook(Handle: HWND);
begin
if (Hook = 0) then
Hook := SetWindowsHookEx(WH_SHELL, @MyShellProc, 0, GetWindowThreadProcessId(Handle, nil));
end;

procedure UnhookKBLayoutHook;
begin
if (Hook <> 0) then UnhookWindowsHookEx(Hook);
Hook := 0;
end;

function GetKBLayoutName(kl: Longint): string;
const
ANames: array[0..1] of string = ("EN", "RU");
begin
case Lo(kl) of
25: Result := ANames[1];
else Result := ANames[0];
end;
end;

procedure TYourForm.FormCreate(Sender: TObject);
begin
SetKBLayoutHook(Handle);
end;

procedure TYourForm.FormDestroy(Sender: TObject);
begin
UnhookKBLayoutHook;
end;

procedure TYourForm.WMSetKBLayoutName(var Message: TMessage);
begin
LayoutLabel.Caption := GetKBLayoutName(Message.LParam);
end;



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.009 c
1-54602
ДЮША
2003-04-07 17:26
2003.04.17
сворачивается в системный трей


14-54858
Duke DEE
2003-04-01 18:37
2003.04.17
TNMHTTP???


3-54519
Эдуард
2003-03-31 19:34
2003.04.17
Создание просмотра VIEW


1-54726
it
2003-04-05 15:02
2003.04.17
Кнопки в Windows XP


3-54432
dima_ya
2003-04-01 18:12
2003.04.17
Критические секции, события, мьютексы и т.д





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский