切换系统语言
使用pyhon切换系统语言到英文
平时编码的时候,经常要打字,然后切换回ide,每次都要更换回英文,大大影响编码效率。
代码
# set keyboard layout
# 设置键盘布局
from win32con import WM_INPUTLANGCHANGEREQUEST
import win32gui
import win32api
# 语言代码
# https://msdn.microsoft.com/en-us/library/cc233982.aspx
CHINESE_CODE = 0x0804
ENGLISH_CODE = 0x0409
LANG_CODE = {CHINESE_CODE: "Chinese (Simplified) (People's Republic of China)",
ENGLISH_CODE: 'English (United States)'}
# 获取前景窗口句柄
hwnd = win32gui.GetForegroundWindow()
# 获取前景窗口标题,可以根据标题处理一些逻辑
title = win32gui.GetWindowText(hwnd)
# 获取键盘布局列表
im_list = win32api.GetKeyboardLayoutList()
im_list = list(map(hex, im_list))
# 设置键盘布局为英文
result = win32api.SendMessage(
hwnd,
WM_INPUTLANGCHANGEREQUEST,
0,
ENGLISH_CODE)
if result == 0:print('设置英文键盘成功!')
写成sublime插件
import sublime, sublime_plugin
# 引入模块
import Pywin32.setup
import win32api, win32gui
from win32con import WM_INPUTLANGCHANGEREQUEST
# 函数主体
def change_language(lang:str="en") -> bool:
LANG = { "zh": 0x0804, "en": 0x0409 }
HWND = win32gui.GetForegroundWindow()
LANGUAGE_CODE = LANG[lang.lower()] or LANG["en"]
# print('切换系统语言为', lang)
res = win32api.PostMessage(
HWND,
WM_INPUTLANGCHANGEREQUEST,
0,
LANGUAGE_CODE
)
return res
# 每当窗口切换回sublime,都激活一次函数
class SwicthLanguageEventer(sublime_plugin.EventListener):
def on_activated_async(self, view):
# check_system_language()
change_language('en')
# 命令形式
class SwitchLanguageCommand(sublime_plugin.TextCommand):
def run(self, view):
change_language('en')