меняем раскладку клавиатур на русскую

import ctypes
import time

user32 = ctypes.WinDLL('user32', use_last_error=True)

def get_foreground_window():
    return user32.GetForegroundWindow()

def get_keyboard_layout(hwnd):
    thread_id = user32.GetWindowThreadProcessId(hwnd, 0)
    return user32.GetKeyboardLayout(thread_id)

def switch_to_russian():
    hwnd = get_foreground_window()
    thread_id = user32.GetWindowThreadProcessId(hwnd, 0)
    HKL_russian = 0x04190419  # Русская раскладка
    user32.ActivateKeyboardLayout(HKL_russian, 0)

def is_english_layout(hkl):
    lang_id = hkl & 0xFFFF
    return lang_id == 0x0409

if __name__ == "__main__":
    while True:
        hwnd = get_foreground_window()
        if hwnd:
            layout = get_keyboard_layout(hwnd)
            if is_english_layout(layout):
                switch_to_russian()
                print("Переключено на русскую раскладку")
        time.sleep(1)








import ctypes
import time

user32 = ctypes.WinDLL('user32', use_last_error=True)

# Получить идентификатор текущего активного окна
def get_foreground_window():
    return user32.GetForegroundWindow()

# Получить идентификатор раскладки клавиатуры активного окна
def get_keyboard_layout(hwnd):
    thread_id = user32.GetWindowThreadProcessId(hwnd, 0)
    return user32.GetKeyboardLayout(thread_id)

# Переключить раскладку на английскую (0x0409 - English US)
def switch_to_english():
    # Получаем дескриптор текущего окна
    hwnd = get_foreground_window()
    thread_id = user32.GetWindowThreadProcessId(hwnd, 0)
    # Устанавливаем раскладку на английскую
    HKL_english = 0x04090409  # English (United States)
    user32.ActivateKeyboardLayout(HKL_english, 0)

def is_english_layout(hkl):
    # Проверяем, что нижние 16 бит совпадают с 0x0409 (код английской раскладки)
    lang_id = hkl & 0xFFFF
    return lang_id == 0x0409

if __name__ == "__main__":
    while True:
        hwnd = get_foreground_window()
        if hwnd:
            layout = get_keyboard_layout(hwnd)
            if not is_english_layout(layout):
                switch_to_english()
                print("Переключено на английскую раскладку")
        time.sleep(1)


Рецензии