Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/190: Рейтинг темы: голосов - 190, средняя оценка - 4.67
-46 / 3 / 0
Регистрация: 17.12.2011
Сообщений: 610

Как программно сменить раскладку клавиатуры

26.11.2013, 20:59. Показов 40223. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как сменить раскладку клавиатуры на английскую, если в системе установлено три более языка?

Вот эта штука почему-то не работает:
ActivateKeyboardLayout(0,HKL_NEXT);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2013, 20:59
Ответы с готовыми решениями:

Как определить раскладку клавиатуры консольного приложения?
Привет форумчане! Как определить раскладку клавиатуры консольного приложения?

Как сменить раскладку клавиатуры на Английскую по клику по Edit
Как сменить раскладку клавиатуры на Английскую по клику по Edit !!

Как сменить раскладку клавиатуры
Здравствуйте, уважаемые господа. Каким образом можно сменить раскладку клавиатуры в консольном приложении? Пробовал таким образом: ...

47
12 / 12 / 3
Регистрация: 07.05.2013
Сообщений: 139
29.11.2013, 13:17
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от DDim1000 Посмотреть сообщение
Программа браузер нормально открывает и заходить на нужный сайт, и вводит логин и пароль, с этим нет проблем, проблема в том что, если стоит русская раскладка то программа вводит русские буквы.
Кусок кода в котором открывается браузер и вводится логин/пароль выложи, пожалуйста
0
-46 / 3 / 0
Регистрация: 17.12.2011
Сообщений: 610
29.11.2013, 13:53  [ТС]
Цитата Сообщение от alfikss Посмотреть сообщение
Кусок кода в котором открывается браузер и вводится логин/пароль выложи, пожалуйста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i,j:integer;
KK : HKL;
  KBid : Integer;
Const
  USKeyboard = 1033;
  RusKeyboard = 1049;
begin
i:=5000;
j:=strtoint(Edit1.Text);
 
j:=j*10;
 
 
ShellExecute(Handle, nil, 'http://www.odnoklassniki.ru/', nil, nil, SW_RESTORE);
 
  sleep(i);
    sleep(3000);
              if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) <> 67699721 then  //раскладка английская
              begin
                    while (GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) <> 67699721) do
                       begin
                         ActivateKeyboardLayout(0,HKL_NEXT);
                         sleep(1500);
                       end;
               end;
 
         keybd_event(Ord(VK_CONTROL), 0, 0, 0); //Нажатие  1.
    keybd_event(Ord('A'), 0, 0, 0); //Нажатие  1.
   keybd_event(Ord('A'), 0, KEYEVENTF_KEYUP, 0); //Отпускание 1.
   keybd_event(Ord(VK_CONTROL), 0, KEYEVENTF_KEYUP, 0); //Отпускание 1.
   Application.ProcessMessages;
 
         keybd_event(Ord(VK_BACK), 0, 0, 0); //Нажатие  1.
  // Sleep(3000);
   keybd_event(Ord(VK_BACK), 0, KEYEVENTF_KEYUP, 0); //Отпускание 1.
   Application.ProcessMessages;
 
 
  keybd_event(Ord('A'), 0, 0, 0); //Нажатие  1.
   keybd_event(Ord('A'), 0, KEYEVENTF_KEYUP, 0); //Отпускание 1.
   Application.ProcessMessages;
   Sleep(j);
 
   keybd_event(Ord('N'), 0, 0, 0); //Нажатие 2.
   keybd_event(Ord('N'), 0, KEYEVENTF_KEYUP, 0); //Отпускание 2.
   Application.ProcessMessages;
   Sleep(j);
...
0
12 / 12 / 3
Регистрация: 07.05.2013
Сообщений: 139
29.11.2013, 14:27
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
procedure TForm1.Button1Click(Sender: TObject);
var
  hWindow: THandle;
  idProcess: DWORD;
  kbl: Cardinal;
  s:string;
begin
ShellExecute(Handle, nil, 'http://www.odnoklassniki.ru/', nil, nil, SW_RESTORE);
sleep(3000);
hWindow:=FindWindow(nil,'Îäíîêëàññíèêè - Mozilla Firefox');
if  hWindow <> 0 then
begin
  idProcess:=GetWindowThreadProcessId(hWindow);
  kbl:=LOWORD(GetKeyboardLayout(idProcess));
  case kbl of
    $409: s:='Eng';
    $419: s:='Rus';
    else s:='hz';
  end;
end;
 
if s='Rus' then begin
   keybd_event(Ord(VK_CONTROL), 0, 0, 0);
   keybd_event(Ord(VK_SHIFT), 0, 0, 0);
   keybd_event(Ord(VK_SHIFT), 0, KEYEVENTF_KEYUP, 0);
   keybd_event(Ord(VK_CONTROL), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
   Sleep(1000);
end;
 
   keybd_event(Ord(VK_CONTROL), 0, 0, 0);
   keybd_event(Ord('A'), 0, 0, 0);
   keybd_event(Ord('A'), 0, KEYEVENTF_KEYUP, 0);
   keybd_event(Ord(VK_CONTROL), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
 
   keybd_event(Ord(VK_BACK), 0, 0, 0);
   keybd_event(Ord(VK_BACK), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
 
   keybd_event(Ord('A'), 0, 0, 0);
   keybd_event(Ord('A'), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
   Sleep(1000);
 
   keybd_event(Ord('N'), 0, 0, 0);
   keybd_event(Ord('N'), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
   Sleep(1000);
end;
У меня браузер Firefox, раскладка переключается по Ctrl+Shift. Если подобные переменные заранее не известны, то подумай над универсальностью. Ну или пиши сюда, вместе подумаем

Добавлено через 50 секунд
ой, end из 20 строки в конец перенеси
1
-46 / 3 / 0
Регистрация: 17.12.2011
Сообщений: 610
30.11.2013, 21:40  [ТС]
Цитата Сообщение от alfikss Посмотреть сообщение
....
У меня браузер Firefox, раскладка переключается по Ctrl+Shift. Если подобные переменные заранее не известны, то подумай над универсальностью. Ну или пиши сюда, вместе подумаем

...
Я чуть-чуть изменил код(if заменил на while do), и сейчас в Google Chrome отлично работает, но вот с Internet Explorer зацикливается, почему так?
0
12 / 12 / 3
Регистрация: 07.05.2013
Сообщений: 139
30.11.2013, 23:09
Дак код то покажи)
0
-46 / 3 / 0
Регистрация: 17.12.2011
Сообщений: 610
30.11.2013, 23:36  [ТС]
Цитата Сообщение от alfikss Посмотреть сообщение
Дак код то покажи)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ShellExecute(Handle, nil, 'http://www.odnoklassniki.ru/', nil, nil, SW_RESTORE);
        sleep(3000);
 
        hWindow:=FindWindow(nil,'Одноклассники - Internet Explorer');
if  hWindow <> 0 then
begin
  idProcess:=GetWindowThreadProcessId(hWindow);
  kbl:=LOWORD(GetKeyboardLayout(idProcess));
  case kbl of
    $409: s:='Eng';
    $419: s:='Rus';
    else s:='hz';
  end;
end;
 
while  s<>'Eng' do begin
   keybd_event(Ord(VK_CONTROL), 0, 0, 0);
   keybd_event(Ord(VK_SHIFT), 0, 0, 0);
   keybd_event(Ord(VK_SHIFT), 0, KEYEVENTF_KEYUP, 0);
   keybd_event(Ord(VK_CONTROL), 0, KEYEVENTF_KEYUP, 0);
   Application.ProcessMessages;
   Sleep(1000);
  idProcess:=GetWindowThreadProcessId(hWindow);
  kbl:=LOWORD(GetKeyboardLayout(idProcess));
    case kbl of
    $409: s:='Eng';
    $419: s:='Rus';
    else s:='hz';
  end;
end;
0
12 / 12 / 3
Регистрация: 07.05.2013
Сообщений: 139
30.11.2013, 23:51
Не
Delphi
1
hWindow:=FindWindow(nil,'Одноклассники - Internet Explorer');
а
Delphi
1
hWindow:=FindWindow(nil,'Одноклассники - Windows Internet Explorer');
1
-46 / 3 / 0
Регистрация: 17.12.2011
Сообщений: 610
01.12.2013, 00:00  [ТС]
Цитата Сообщение от alfikss Посмотреть сообщение
Не
Delphi
1
hWindow:=FindWindow(nil,'Одноклассники - Internet Explorer');
а
Delphi
1
hWindow:=FindWindow(nil,'Одноклассники - Windows Internet Explorer');
Спасибо большое.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2013, 00:00
Помогаю со студенческими работами здесь

Как программно определить текущую раскладку клавиатуры?
Хочу написать для себя небольшую программку, которая будет постоянно показывать на экране монитора небольшое окошко, на котором будет...

Сменить раскладку клавиатуры
Добрый вечер! Кто может подсказать как сменить раскладку клавиатуры, н-р при нажатии на кнопку? Текущую раскладку определить могу...

не получается программно сменить раскладку консольного приложения
Здравствуйте, вот код private static extern long GetKeyboardLayoutName(StringBuilder pwszKLID); ...

Автоматически сменить раскладку клавиатуры
Доброго дня!. Подскажите почему у меня не получается сменить автоматически раскладку клавиатуры. с++ Builder XE4 void...

Программно JS установить раскладку клавиатуры с русского на английский и обратно
Надо программно установить раскладку клавиатуры с русского на английский и обратно (функцию надо на JS). При получении фокуса полями,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru