Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1084039217
studentRSU
2004-05-08 22:00
2004.05.23
Проблема со скринсервером


1-1084118003
Aaa
2004-05-09 19:53
2004.05.23
Реализация TImage а заданной формы?


14-1083792650
saNat
2004-05-06 01:30
2004.05.23
БД, но идет сюда.


1-1083930971
Vlad1
2004-05-07 15:56
2004.05.23
run-time пакеты в Delphi8


7-1081233525
random
2004-04-06 10:38
2004.05.23
как оределить букву CD-ROM?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский