Уведомления

Группа в Telegram: @pythonsu

#1 Июль 30, 2008 11:43:54

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

как переключить, установить Ru, (либо En) раскладку клавиатуры.
P.S. нашел решение http://forum.xakep.ru/m_1009422/tm.htm
но там для delphi, как его перенести на python
код1

const
ENGLISH = $409;
RUSSIAN = $419;

....

{активная раскладка в активном окне}
function GetActiveKbdLayoutWnd: LongWord;
var
hWindow,idProcess: THandle;
begin
// получить handle активного окна чужой программы
hWindow := GetForegroundWindow;
// Получить идентификатор чужого процесса
idProcess := GetWindowThreadProcessId(hWindow,nil);
// Получить текущую раскладку в чужой программе
Result:=(GetKeyboardLayout(idProcess) shr $10);
end;

{установить раскладку в активном окне}
procedure SetLayoutActiveWnd(kbLayout : LongWord);
var
Layout: HKL;
hWindow: THandle;
begin
// получить handle активного окна чужой программы
hWindow := GetForegroundWindow;
// Получить ссылку на раскладку
Layout := LoadKeyboardLayout(PChar(IntToStr(kbLayout)), 0);
// посылаем сообщение о смене раскладки
SendMessage(hWindow, WM_INPUTLANGCHANGEREQUEST, 1, Layout);
end;

procedure ChangeLanguage;
begin
if GetActiveKbdLayoutWnd = ENGLISH then // получает язык верно
SetLayoutActiveWnd(RUSSIAN) // но не устанавливает русский
else
SetLayoutActiveWnd(ENGLISH) // зато прекрасно устанавливает английский
end;
вариант 2
LoadKeyboardLayout('00000409', KLF_ACTIVATE); //  для английской
LoadKeyboardLayout('00000419', KLF_ACTIVATE); // для русской



Офлайн

#2 Июль 30, 2008 12:23:34

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

ставиш pywin32 а дальше почти точно также
думаю в ней будут все необходимые тебе функции которые тут есть
был бы у меня хотябы один виндовс показал бы пример :\



Отредактировано (Июль 30, 2008 12:24:09)

Офлайн

#3 Июль 30, 2008 12:57:10

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

evgenyl
ставишь pywin32 а дальше почти точно также
эх, какой еще класс использовать win32api?
P.S. эх завидую что винды нету…



Офлайн

#4 Июль 30, 2008 13:17:52

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

win32ui.GetForegroundWindow
win32process.GetWindowThreadProcessId
win32api.LoadKeyboardLayout
win32api.SendMessage

GetKeyboardLayout пока не нашел



Офлайн

#5 Авг. 1, 2008 06:59:05

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

подскажите где взять значение KLF_ACTIVATE, WM_INPUTLANGCHANGEREQUEST?



Офлайн

#6 Авг. 1, 2008 09:45:36

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

как установить Ru, (либо En) раскладку клавиатуры в windows

спроси у гугла, а можно даже и в MSDN глянуть



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version