hellslade
Апрель 10, 2008 07:58:50
пробовал использовать win32api.GetKeyboardState(), так она возвращает какой-то бред…хотя win32api.GetKeyboardLayoutList() возвращает 2х эл-ный массив, видомо 2 раскладки. уже вроде где только не шарился, не могу найти(
hellt
Апрель 10, 2008 11:48:31
LangRU = 419 ; константа для русского языка
LangEN = 409 ; константа для английского языка
далее идешь в реестр и смотришь что у него там по пути
HKEY_CURRENT_USER\Keyboard Layout\Preload
в параметрах 1 и 2
Andity
Апрель 10, 2008 12:54:19
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.
hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
hellt
Апрель 10, 2008 16:02:00
Andity
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.
hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
понятно. просто не важно Си это константы или нет, в реестре они именно строкой представлены.
Согласен, метод с win32api.GetKeyboardLayoutList() куда проще
hellslade
Апрель 10, 2008 16:34:00
)) это все конечно здОрово!
но вопрос не в том, чтобы узнать какие языки установлены у юзера, а в том чтобы определить текущую раскладку клавиатуры.
т.е. я должен узнать какой текущий язык включен у пользователя
какие еще будут предложения?))
nobodyzzz
Апрель 10, 2008 17:18:57
Andity
67699721L - английский
68748313L - русский
btw, в хексе эти два числа выглядят как 4090409 и 4190419 =)))
nobodyzzz
Апрель 10, 2008 17:38:12
можно попробовать как-нубудь так
import ctypes
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
print hex(pf(0))
hellslade
Апрель 10, 2008 18:24:41
nobodyzzz
во, действительно, это работает!))спасиб