Форум сайта python.su
пробовал использовать win32api.GetKeyboardState(), так она возвращает какой-то бред…хотя win32api.GetKeyboardLayoutList() возвращает 2х эл-ный массив, видомо 2 раскладки. уже вроде где только не шарился, не могу найти(
Офлайн
LangRU = 419 ; константа для русского языка
LangEN = 409 ; константа для английского языка
далее идешь в реестр и смотришь что у него там по пути
HKEY_CURRENT_USER\Keyboard Layout\Preload
в параметрах 1 и 2
Офлайн
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.
hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
Офлайн
Andityпонятно. просто не важно Си это константы или нет, в реестре они именно строкой представлены.
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.
hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
Офлайн
)) это все конечно здОрово!
но вопрос не в том, чтобы узнать какие языки установлены у юзера, а в том чтобы определить текущую раскладку клавиатуры.
т.е. я должен узнать какой текущий язык включен у пользователя
какие еще будут предложения?))
Офлайн
Anditybtw, в хексе эти два числа выглядят как 4090409 и 4190419 =)))
67699721L - английский
68748313L - русский
Офлайн
можно попробовать как-нубудь так
import ctypes
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
print hex(pf(0))
Офлайн
nobodyzzz
во, действительно, это работает!))спасиб
Офлайн