Посты с тэгом win api


Проблемы с локализацией кнопок диалогового окна wx.MessageDialog

Э-э-х, где же ты, кросс-платформенность?

Класс wx.MessageDialog имеет разную реализацию на разных операционных системах. Собственно на операционных системах GNU/Linux этой проблемы вовсе нет, так как это диалоговое окно реализовано средствами wxWidgets, и перевод кнопок осуществляется через стандартный механизм интернационализации wxPython. Совсем по другому обстоят дела на ОС семейства Windows.

wx.MessageDialog на ОС Windows

Для ОС Windows данное диалоговое окно реализовано средствами операционной системы (лень, видать было сделать по-другому). Соответственно, имеем вызов функции MessageBox из всеми любимого нами


Python: как программно переключить раскладку клавиатуры в Windows

Исследовав данный вопрос, я обнаружил, что Python не имеет средств из коробки для решения этой задачи. Соответственно, задача должна решаться для каждой ОС своим путем. Данное решение было найдено мной для ОС Windows XP +.

Панацея - Win API
Для того, чтобы выполнить задачу необходимо установить дополнительную библиотеку pywin32, которая предоставляет доступ к функциям Windows API из Python. Из этой библиотечки нам понадобится модуль win32api.
>>> import win32api
Исследовав его содержимое можно увидеть, что для работы с раскладкой клавиатуры есть несколько функций и одно системное сообщение Windows - WM_INPUTLANGCHANGE:
  • GetKeyboardLayout
  • GetKeyboardLayoutList
  • LoadKeyboardLayout
В данном случае для нас важ