1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем orion2222, 14 фев 2020.

  1. Новичок

    Регистрация:
    14 фев 2020
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте, подскажите как при установке поменять раскладку с RU на ENG. И возможно ли удалить вообще ненужную раскладку. Чтоб скрипт проверил наличие раскладок установленых и оставил нужные, удалил ненужные.???
     
  2. Борода Супер модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    735
    Симпатии:
    588
    Пол:
    Мужской
    на 10х64 включает только en раскладку, особо некогда разбираться, может подскажут еще
    Код (Inno):
    1.  
    2. [Setup]
    3. AppName=My Application
    4. AppVersion=1.5
    5. DefaultDirName={pf}\My Application
    6.  
    7. [code]
    8. #ifdef UNICODE
    9.   #define A "W"
    10. #else
    11.   #define A "A"
    12. #endif
    13.  
    14. function LoadKeyboardLayout(pwszKLID: PAnsiChar; Flags: UINT): LongWord;
    15.  external 'LoadKeyboardLayout{#A}@user32.dll stdcall';
    16. function ActivateKeyboardLayout(hkl: LongWord; Flags: UINT): LongWord;
    17.  external 'ActivateKeyboardLayout@user32.dll stdcall';
    18.  
    19. procedure KB_SWITCH(Sender: TObject);
    20. begin
    21.   case TNewButton(Sender).Tag of
    22.   0:LoadKeyboardLayout('00000419', 1);
    23.   1:LoadKeyboardLayout('00000409', 1);
    24.   2:ActivateKeyboardLayout(LoadKeyboardLayout('0', 0), 0);
    25.   end;
    26. end;
    27.  
    28. procedure InitializeWizard();
    29. var
    30.   i:Integer;
    31. begin
    32.   for i:=0 to 2 do
    33.   with TNewButton.Create(WizardForm) do
    34.   begin
    35.     Parent := WizardForm;
    36.     SetBounds(ScaleX(24+i*35),ScaleY(328),ScaleX(30),ScaleY(25));
    37.     case i of
    38.       0 : Caption := 'RU';
    39.       1 : Caption := 'EN';
    40.       2 : Caption := 'N';
    41.     end;
    42.     Tag := i;
    43.     OnClick := @KB_SWITCH;
    44.   end;
    45. end;
    46.  
     
    YURSHAT нравится это.
  3. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    909
    Симпатии:
    672
    В: Как программно переключить раскладку клавиатуры?
    О: На англ. и рус. раскладки:
    Пример от Mailchik

    Код (Inno):
    1. [Setup]
    2. AppName=My Application
    3. AppVersion=1.5
    4. DefaultDirName={pf}\My Application
    5.  
    6. [Code ]
    7. {"00000407"      Немецкий
    8. "00000409"      Английский
    9. "0000040C"      Французский
    10. "0000040D"      Финский
    11. "00000410"      Итальянский
    12. "00000415"      Польский
    13. "00000419"      Русский
    14. "00000422"      Украинский
    15. "00000423"      Белорусский
    16. "00000425"      Эстонский
    17. "00000426"      Латвийский
    18. "00000427"      Литовский}
    19. const
    20. KLF_ACTIVATE = 1;
    21.  
    22. function LoadKeyboardLayout(pwszKLID : string; Flags : Uint) : LongInt;
    23. external 'LoadKeyboardLayoutW@user32.dll stdcall';
    24.  
    25. var
    26. Button : TButton;
    27. Edit : TEdit;
    28.  
    29. procedure TestClick(Sender : TObject);
    30. begin
    31.   case TButton(Sender).Tag of
    32.    0: begin
    33.       TButton(Sender).Tag := 1;
    34.       TButton(Sender).Caption := 'En';
    35.       LoadKeyboardLayout('00000419', KLF_ACTIVATE); //рус
    36.       end;
    37.    1: begin
    38.       TButton(Sender).Tag := 0;
    39.       TButton(Sender).Caption := 'Ru';
    40.       LoadKeyboardLayout('00000409', KLF_ACTIVATE); //англ
    41.       end;
    42.   end;
    43. end;
    44.  
    45. procedure InitializeWizard;
    46. begin
    47.   with WizardForm do begin
    48.    OuterNotebook.Hide;
    49.   end;
    50.  
    51.   Button := TButton.Create(WizardForm);
    52.   with Button do begin
    53.    Parent := WizardForm;
    54.    SetBounds(ScaleX(100), ScaleY(250), ScaleX(100), ScaleY(25));
    55.    Caption := 'Ru';
    56.    OnClick := @TestClick;
    57.   end;
    58.  
    59.   Edit := TEdit.Create(WizardForm);
    60.   with Edit do begin
    61.    Parent := WizardForm;
    62.    SetBounds(ScaleX(10), ScaleY(100), ScaleX(400), ScaleY(25));
    63.   end;
    64. end;
     
    Nemko нравится это.

Поделиться этой страницей