Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1039
от 19.01.2008, 15:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 432, Экспертов: 64
В номере:Вопросов: 2, Ответов: 5

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 118358: Доброго времени суток. Подскажите пожалуста, как узнать какая раскладка клавиатуры выбранна в данный момент, в другой программе и как её изменить. Если не составит труда можно и кусок кода. Заранее благодарен....
Вопрос № 118414: Здравствуйте, уважаемые эксперты. вопрос такой: как в Delphi узнать системную настройку мыши, которая находится в "Панель управленияМышьКолесико". Имею в виду число, указанное в количестве строк прокрутки колесиком, установлена ли эта...

Вопрос № 118.358
Доброго времени суток.

Подскажите пожалуста, как узнать какая раскладка клавиатуры выбранна в данный момент, в другой программе и как её изменить.
Если не составит труда можно и кусок кода.

Заранее благодарен.
Отправлен: 14.01.2008, 06:44
Вопрос задал: Yark1n9 (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Raptor3
Здравствуйте, Yark1n9!

Button1Click - это узнаем текущую раскладку

LoadKeyboardLayout('00000409', KLF_ACTIVATE); // Английский язык

LoadKeyboardLayout('00000419',KLF_ACTIVATE);// Великий и могучий РУССКИЙ

Приложение:

---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете

Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 14.01.2008, 06:56
Оценка за ответ: 3
Комментарий оценки:
Это только для приложения в котором нажали кнопку, вопрос был задан как это сделать в другой программе.

Отвечает: Виктор Пырлик
Здравствуйте, Yark1n9!

Вот неплохая статья на этот счет.. довольно короткие и ясные примеры с кодом, реализовано всё что вы спрашиваете.

Получение и установка текущей раскладки клавиатуры

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Специалист)
Ответ отправлен: 14.01.2008, 09:09
Оценка за ответ: 4
Комментарий оценки:
Статья не плохая, а сами пробовали? Не переключает раскладку с EN на RU, вернее переключает непонятно как: в панели значок переключается, а символы продолжают вводиться на английском. Что это может быть?

Отвечает: Denisss

Здравствуйте, Yark1n9!

Пример переключения раскладки в других приложениях прикреплен к ответу.
Также пример можно скачать здесь: ссылка (Файл будет удален через 1 месяц после последнего скачивания).

Принцип работы с примером:
1. Нажать кнопку "Список окон" -> список окон заполнится открытыми на данный момент окнами (данный список может оказаться не полным или избыточным, но основная задача примера не заключается в получении списка всех окон).
2. В списке окон выбрать имя тестируемого окна -> в списке раскладок должна выделиться установленная в выбранном приложении раскладка.
3. В списке раскладок выбрать раскладку -> в выбранном (в списке окон) окне должна смениться раскладка.

При запуске приложения, программа получает список установленных в системе раскладок (функция GetKeyboardLayoutList). Далее запоминается текущая раскладка приложения (GetKeyboardLayout с нулевым параметром).
По очереди устанавливаются раскладки (ActivateKeyboardLayout), полученные в списке и определяются их имена (GetKeyboardLayoutName) вида '00000409'. Русские (или др.) имена считываются из реестра.

Остальные комментарии можно найти в самом примере.

Удачи!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...

Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
----
Ответ отправлен: 14.01.2008, 22:19
Оценка за ответ: 5

Отвечает: Genia007
Здравствуйте, Yark1n9!
Узнать раскладку клавиатуры в любом активном окне
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
//раскладка английская
else
//раскладка НЕанглийская, например 68748313 соответствует русской

Переключить раскладку можно так, пробовал только для текущей проги.
//На русский
procedure TForm1.Button1Click(Sender: TObject);
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);
end;

//На английский
procedure TForm1.Button2Click(Sender: TObject);
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE);
end;
Ответ отправил: Genia007 (статус: 4-ый класс)
Ответ отправлен: 15.01.2008, 12:07


Вопрос № 118.414
Здравствуйте, уважаемые эксперты.
вопрос такой: как в Delphi узнать системную настройку мыши, которая находится в "Панель управленияМышьКолесико". Имею в виду число, указанное в количестве строк прокрутки колесиком, установлена ли эта опция или установлена опция "на один экран".
Отправлен: 14.01.2008, 12:52
Вопрос задал: Alexander L. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Drbear
Здравствуйте, Alexander L.!

Попробуйте использовать подобную функцию, она возвращает число, указанное в количестве строк прокрутки колесиком:

function GetMouseScrLin: Integer;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 14.01.2008, 13:06
Оценка за ответ: 5
Комментарий оценки:
Отлично работает, огромное спасибо. Добавлю лишь то, что эта функция возвращает -1 если стоит опция прокрутки по экранам.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное