Форум сайта python.su
как переключить, установить 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;
LoadKeyboardLayout('00000409', KLF_ACTIVATE); // для английской
LoadKeyboardLayout('00000419', KLF_ACTIVATE); // для русской
Офлайн
ставиш pywin32 а дальше почти точно также
думаю в ней будут все необходимые тебе функции которые тут есть
был бы у меня хотябы один виндовс показал бы пример :\
Отредактировано (Июль 30, 2008 12:24:09)
Офлайн
evgenylэх, какой еще класс использовать win32api?
ставишь pywin32 а дальше почти точно также
Офлайн
win32ui.GetForegroundWindow
win32process.GetWindowThreadProcessId
win32api.LoadKeyboardLayout
win32api.SendMessage
GetKeyboardLayout пока не нашел
Офлайн
подскажите где взять значение KLF_ACTIVATE, WM_INPUTLANGCHANGEREQUEST?
Офлайн
спроси у гугла, а можно даже и в MSDN глянуть
Офлайн