python 自动化解决 windows 中英文切换快捷键失效问题

发布时间 2023-06-01 04:32:44作者: 心随所遇

windows11 中英文切换快捷键突然没返应了,之前是五笔输入法中文自动上屏,更新过一次后,中英文切换快捷键也失效了。官方也不知道什么时候修复,每次切换都要用鼠标点一下,太麻烦了,于是想用 pthon 自动化模拟鼠标单击。实现逻辑:当程序打开后,监听快捷键 ctrl + space 然后模拟鼠标在任务栏的语言指示图标所在的坐标上单击一下,然后鼠标再退回到原来位置。
我也是边学边做,遇到问题了就查资料,改了几版,最后才成了满意的版本,能在系统托盘运行,方便开启和停止。经过这次实践,感觉 python 越来越好玩了。python 学点基础语法,然后就是边查边学各种工具库的使用,作为工具,基本上这样就可以了。

import pyautogui
import keyboard
import pystray
from PIL import Image

# 打包成 exe
# pyinstaller --noconsole --add-data="d:\icon.png;." app.py
# --noconsole 不显示 cmd 窗口
# --add-data="d:\icon.png;." 添加其他资源 将 d:\icon.png 添加到程序根目录

class App(object):

    def position(self, hotkey='ctrl+windows+x'):
        '''注册快捷键,获取当前坐标'''
        keyboard.add_hotkey(hotkey, lambda: pyautogui.alert(pyautogui.position(), title='当前坐标', button='OK'))
        return self

    def switchInput(self):
        '''中英文切换'''
        def click():
            x, y = pyautogui.position()
            pyautogui.click(1720, 1056) # 坐标位置,可根据实际情况修改,可通过 position 方法获取坐标
            pyautogui.moveTo(x, y) # 还原位置

        keyboard.add_hotkey('ctrl+space', click) # 注册快捷键
        return self

    def start(self):
        ''' 在系统托盘运行 '''
        pystray.Icon('test', icon=Image.open('icon.png'), menu=pystray.Menu(
            pystray.MenuItem('关闭', lambda icon, item : icon.stop())
        )).run()

if __name__ == '__main__':
    App().position().switchInput().start()