Вопрос Как при установке поменять раскладку с RU на ENG

orion2222

Мимокрокодил
Здравствуйте, подскажите как при установке поменять раскладку с RU на ENG. И возможно ли удалить вообще ненужную раскладку. Чтоб скрипт проверил наличие раскладок установленых и оставил нужные, удалил ненужные.???
 

LexBell

Борода
Супер модератор
на 10х64 включает только en раскладку, особо некогда разбираться, может подскажут еще
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[code]
#ifdef UNICODE
  #define A "W"
#else
  #define A "A"
#endif

function LoadKeyboardLayout(pwszKLID: PAnsiChar; Flags: UINT): LongWord;
 external 'LoadKeyboardLayout{#A}@user32.dll stdcall';
function ActivateKeyboardLayout(hkl: LongWord; Flags: UINT): LongWord;
 external 'ActivateKeyboardLayout@user32.dll stdcall';

procedure KB_SWITCH(Sender: TObject);
begin
  case TNewButton(Sender).Tag of
  0:LoadKeyboardLayout('00000419', 1);
  1:LoadKeyboardLayout('00000409', 1);
  2:ActivateKeyboardLayout(LoadKeyboardLayout('0', 0), 0);
  end;
end;

procedure InitializeWizard();
var
  i:Integer;
begin
  for i:=0 to 2 do
  with TNewButton.Create(WizardForm) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(24+i*35),ScaleY(328),ScaleX(30),ScaleY(25));
    case i of
      0 : Caption := 'RU';
      1 : Caption := 'EN';
      2 : Caption := 'N';
    end;
    Tag := i;
    OnClick := @KB_SWITCH;
  end;
end;
 

vint56

Ветеран
Проверенный
В: Как программно переключить раскладку клавиатуры?
О: На англ. и рус. раскладки:
Пример от Mailchik

Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Code ]
{"00000407"      Немецкий
"00000409"      Английский
"0000040C"      Французский
"0000040D"      Финский
"00000410"      Итальянский
"00000415"      Польский
"00000419"      Русский
"00000422"      Украинский
"00000423"      Белорусский
"00000425"      Эстонский
"00000426"      Латвийский
"00000427"      Литовский}
const
KLF_ACTIVATE = 1;

function LoadKeyboardLayout(pwszKLID : string; Flags : Uint) : LongInt;
external 'LoadKeyboardLayoutW@user32.dll stdcall';

var
Button : TButton;
Edit : TEdit;

procedure TestClick(Sender : TObject);
begin
  case TButton(Sender).Tag of
   0: begin
      TButton(Sender).Tag := 1;
      TButton(Sender).Caption := 'En';
      LoadKeyboardLayout('00000419', KLF_ACTIVATE); //рус
      end;
   1: begin
      TButton(Sender).Tag := 0;
      TButton(Sender).Caption := 'Ru';
      LoadKeyboardLayout('00000409', KLF_ACTIVATE); //англ
      end;
  end;
end;

procedure InitializeWizard;
begin
  with WizardForm do begin
   OuterNotebook.Hide;
  end;

  Button := TButton.Create(WizardForm);
  with Button do begin
   Parent := WizardForm;
   SetBounds(ScaleX(100), ScaleY(250), ScaleX(100), ScaleY(25));
   Caption := 'Ru';
   OnClick := @TestClick;
  end;

  Edit := TEdit.Create(WizardForm);
  with Edit do begin
   Parent := WizardForm;
   SetBounds(ScaleX(10), ScaleY(100), ScaleX(400), ScaleY(25));
  end;
end;
 
Сверху