Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2008 07:58:50

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

пробовал использовать win32api.GetKeyboardState(), так она возвращает какой-то бред…хотя win32api.GetKeyboardLayoutList() возвращает 2х эл-ный массив, видомо 2 раскладки. уже вроде где только не шарился, не могу найти(



Офлайн

#2 Апрель 10, 2008 11:48:31

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

LangRU = 419 ; константа для русского языка
LangEN = 409 ; константа для английского языка

далее идешь в реестр и смотришь что у него там по пути
HKEY_CURRENT_USER\Keyboard Layout\Preload
в параметрах 1 и 2



Офлайн

#3 Апрель 10, 2008 12:54:19

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

как узнать раскладку клавиатуры?

hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.

hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский



Офлайн

#4 Апрель 10, 2008 16:02:00

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

Andity
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.

hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
понятно. просто не важно Си это константы или нет, в реестре они именно строкой представлены.
Согласен, метод с win32api.GetKeyboardLayoutList() куда проще



Офлайн

#5 Апрель 10, 2008 16:34:00

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

)) это все конечно здОрово!
но вопрос не в том, чтобы узнать какие языки установлены у юзера, а в том чтобы определить текущую раскладку клавиатуры.
т.е. я должен узнать какой текущий язык включен у пользователя
какие еще будут предложения?))



Офлайн

#6 Апрель 10, 2008 17:18:57

nobodyzzz
От:
Зарегистрирован: 2007-06-12
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

Andity
67699721L - английский
68748313L - русский
btw, в хексе эти два числа выглядят как 4090409 и 4190419 =)))



Офлайн

#7 Апрель 10, 2008 17:38:12

nobodyzzz
От:
Зарегистрирован: 2007-06-12
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

можно попробовать как-нубудь так

import ctypes
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
print hex(pf(0))



Офлайн

#8 Апрель 10, 2008 18:24:41

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

как узнать раскладку клавиатуры?

nobodyzzz
во, действительно, это работает!))спасиб



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version