Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Раскладка клавиатуры


Автор: Palladin 8.5.2009, 11:44
Всем доброго дня. Собстно задача такая, при заходе на форму нужно переключить раскладку клавиатуры на русскую и при этом запретить смену раскладки на английскую пока юзер на этой форме...

Автор: kami 8.5.2009, 12:51
Цитата(Palladin @  8.5.2009,  11:44 Найти цитируемый пост)
переключить раскладку клавиатуры на русскую

ActivateKeyboardLayout


Цитата(Palladin @  8.5.2009,  11:44 Найти цитируемый пост)
 запретить смену раскладки на английскую

ХЗ.
Можно попробовать UnloadKeyboardLayout, но см. http://msdn.microsoft.com/en-us/library/ms646324.aspx.

Автор: Palladin 8.5.2009, 12:57
Спс smile 

Автор: Dmi3ev 8.5.2009, 13:18
английская
Код

LoadKeyBoardLayout('00000409', KLF_ACTIVATE);

русская
Код

LoadKeyBoardLayout('00000419', KLF_ACTIVATE);

Цитата

запретить смену раскладки на английскую пока юзер на этой форме... 

можно это реализовать вообще в тупую с помощью OnKeyPress...
или хук поставить...
или...
много вариантов  smile  

Автор: Keeper89 11.5.2009, 00:39
В Windows есть событие смены раскладки клавиатуры: http://msdn.microsoft.com/ru-ru/library/ms632629(en-us,VS.85).aspx. Думаю проще перехватить его:
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    procedure WmInputLangChange(var msg: TMessage); message WM_INPUTLANGCHANGE;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WmInputLangChange(var msg: TMessage);
const
  RUS_KEYB = '00000419';
var
  szBuf : array[0..KL_NAMELENGTH] of Char;
begin
  GetKeyboardLayoutName(@(szBuf[0]));
  if string(szBuf) <> RUS_KEYB then
    LoadKeyBoardLayout(RUS_KEYB, KLF_ACTIVATE);
end;

end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)