Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Смена раскладки клавиатуры   Найти похожие ветки 

 
Anka   (2004-04-14 10:25) [0]

Подскажите, пожалуйста, как программно переключить шрифт, например при загрузке чтоб был русский, если по умолчанию в винде английский? Спасибо


 
TUser ©   (2004-04-14 10:35) [1]

ActivateKeyBoardLayout


 
Sherbacov ©   (2004-04-14 16:46) [2]

Должно помочь по всем вопросам.

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение раскладки клавиатуры

5 функций для получения/установки раскладки клавиатуры в своем или активном в текущий момент времени приложении:

function NameKeyboardLayout(layout : LongWord) : string;
Получает название раскладки из списка (для удобства сделал :)))

function GetActiveKbdLayout : LongWord;
Получает раскладку в своей программе

function GetActiveKbdLayoutWnd : LongWord;
Получает раскладку в активном окне

procedure SetKbdLayout(kbLayout : LongWord);
Устанавливает раскладку в своей программе

procedure SetLayoutActiveWnd(kbLayout : LongWord);
Устанавливает раскладку в активном окне

Зависимости: Windows, Messages
Автор:       savva, savva@nm.ru, ICQ:126578975, Орел
Copyright:   Сапронов Алексей (Savva)
Дата:        27 июня 2002 г.
***************************************************** }
unit RU_EN;

interface
uses Windows, SysUtils, Messages;

type
 TLang = class
 private
   { Private declarations }
 public
   GetActiveKbdLayoutWnd : LongWord;
 end;

{типы описываем }
const
 CNT_LAYOUT = 2; // количество известных раскладок
 ENGLISH = $409;
 RUSSIAN = $419;

 TKbdValue : array [1..CNT_LAYOUT] of LongWord =
               ( ENGLISH,
                 RUSSIAN
               );
 TKbdDisplayNames : array [1..CNT_LAYOUT] of string =
               ("English",
                "Русский"
               );

implementation

{----- собственно сами процедури и функции -----}

{получаем название раскладки}
function NameKeyboardLayout(layout : LongWord) : string;
var
 i: integer;
begin
 Result:="";
 try
   for i:=1 to CNT_LAYOUT do
     if TKbdValue[i]=layout then Result:= TKbdDisplayNames[i];
 except
   Result:="";
 end;
end;
//**************** end of NameKeyboardLayot ***************************
{активная раскладка в своей программе}
function GetActiveKbdLayout : LongWord;
begin
 result:= GetKeyboardLayout(0) shr $10;
end;
//***************** end of GetActiveKbdLayot ****************************
{активная раскладка в активном окне}
function GetActiveKbdLayoutWnd : LongWord;
var
 hWindow,idProcess : THandle;
begin
 // получить handle активного окна чужой программы
 hWindow := GetForegroundWindow;
 // Получить идентификатор чужого процесса
 idProcess := GetWindowThreadProcessId(hWindow,nil);
 // Получить текущую раскладку в чужой программе
 Result:=(GetKeyboardLayout(idProcess) shr $10);
end;
//***************** end of GetActiveKbdLayotWnd **************************
{установить раскладку в своей программе}
procedure SetKbdLayout(kbLayout : LongWord);
var
 Layout: HKL;
begin
 // Получить ссылку на раскладку
 Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
 // Переключить раскладку на русскую
 ActivateKeyboardLayout(Layout,KLF_ACTIVATE);
end;
//****************** end of SetKbdLayot **********************************
{установить раскладку в активном окне}
procedure SetLayoutActiveWnd(kbLayout : LongWord);
var
 Layout: HKL;
 hWindow{, idProcess} : THandle; // ION T: не используется
begin
 // получить handle активного окна чужой программы
 hWindow := GetForegroundWindow;
 // Получить ссылку на раскладку
 Layout:=LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
 // посылаем сообщение о смене раскладки
 sendMessage(hWindow,WM_INPUTLANGCHANGEREQUEST,1,Layout);
end;
//***************** end of SetLayoutActiveWnd *****************************

end.



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
14-1083085712
Piter
2004-04-27 21:08
2004.05.23
Какая у вас любимая комедия?


1-1084039217
studentRSU
2004-05-08 22:00
2004.05.23
Проблема со скринсервером


14-1083231096
Proteste
2004-04-29 13:31
2004.05.23
Хакеры кто они?


3-1082149737
lockheed_man
2004-04-17 01:08
2004.05.23
поиск записи в таблице


3-1083326791
Mister
2004-04-30 16:06
2004.05.23
MySQL