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

Вниз

Keyboard   Найти похожие ветки 

 
Adil   (2002-11-24 08:10) [0]

Salam Aleykum
Как поменят расскладку(keyboard layout (En,Ru,Tr...)) из моего программу.И как определять расскладку.
loadkeyoardlayout в windows 2000 pro не работает.
_______________


 
Андрей Ваганов   (2002-11-24 17:47) [1]

Привет!
Попробуй следующий код(проверен, работает в D5):
****************************************************************
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ru,eng:HKL;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
ru:=LoadKeyboardLayout("00000419",0);
eng:=LoadKeyboardLayout("00000409",0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ActivateKeyboardLayout(ru,0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ActivateKeyboardLayout(eng,0);
end;

end.
****************************************************************
...посмотри:
1.ActivateKeyboardLayout
2.GetKeyboardLayoutName
3.UnloadKeyboardLayout
4.LoadKeyboardLayout
5.GetKeyboardLayoutList
6.GetKeyboardState
...итд всё есть в MSDN Library


 
Alexandr Emelin   (2002-11-27 08:45) [2]

А как отследить переключение раскладки?


 
askanio   (2002-11-27 09:55) [3]

Вот ещё один вариант.
В этой процедуре я переключаю раскладку при установке фокуса в определённый столбец сетки. Для переключения использую "HKL_Next" так как у меня доступно только два варианта раскладки (rus, eng).

procedure TForm3.SG1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
buf: array[0..8] of char;
I: Integer;
begin
GetKeyboardLayoutName(buf);
I := StrToInt(buf);
if (ACol = 1) and (I = 419) then
ActivateKeyboardLayout(HKL_NEXT, 0);
if (ACol = 2) and (I = 409) then
ActivateKeyboardLayout(HKL_NEXT, 0);
end;


 
Garrett   (2003-01-11 16:29) [4]

определить переключение раскладки можно повесив хук на Send-сообщения текущему потоку и отлавливая там сообщение WM_INPUTLANGCHANGE


 
kernel::panic   (2003-02-12 10:32) [5]

4Garret а не напишешь примерчик для отлова WM_INPUTLANGCHANGE, а то не очень получается.


 
Ruf   (2003-02-12 11:44) [6]

Прикол: только хотел писать такой же вопрос :)
Чтобы передать изменение языка всей системы:
PostMessage(HWND_BROADCAST,WM_INPUTLANGCHANGEREQUEST,0,0);



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

Форум: "Система";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
9-19401
Psibug
2002-11-03 14:30
2003.04.07
Fallout^палитра


3-19485
melavcorp
2003-03-19 17:45
2003.04.07
Компонент типа TDBJpegImage или что-то подобное..


6-19718
Alexei113
2003-02-08 01:23
2003.04.07
Установка TCP/IP соединения


4-19934
Yttrium
2003-02-06 01:38
2003.04.07
Перетаскиваю из экзешника форму(модальный диалог) в дэлэлэ.


1-19519
Александр Ч.
2003-03-26 14:44
2003.04.07
TreeView -замучал уже





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский