Python 修改輸入法狀態

import win32api,win32gui,win32con
import os
import time
from enum import Enum

class Lan(Enum):
    """
    語言代碼值參考:https://msdn.microsoft.com/en-us/library/cc233982.aspx
    """
    EN = 0x4090409
    ZH = 0x8040804

def change_lan(lan :Lan):
    """
    修改當前激活窗口輸入法
    :param lan: 語言類型
    :return: True 修改成功,False 修改失敗
    """
    # 獲取系統輸入法列表
    hwnd = win32gui.GetForegroundWindow()
    im_list = win32api.GetKeyboardLayoutList()
    im_list = list(map(hex, im_list))

    # 加載輸入法
    if hex(lan.value) not in im_list:
        win32api.LoadKeyboardLayout('0000' + hex(lan.value)[-4:], 1)

    result = win32api.SendMessage(
        hwnd,
        win32con.WM_INPUTLANGCHANGEREQUEST,
        0,
        lan.value)
    if result == 0:
        print('設置%s鍵盤成功!' % lan.name)
    return result == 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章