• C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板


    一、问题:

    今天,我整理了一下两个问题

    1、如何获取本机安装所有输入法,并设置为系统输出语言

    2、如何打开搜狗拼音输入法工具栏和手写板:

    二、解决方法

    比如:我们要设置搜狗输入法为本机输入语言,要怎么用代码实现呢?

       //获取所有安装的输入法
        InputLanguageCollection langs = InputLanguage.InstalledInputLanguages;
        //循环遍历输入法集合
        foreach (InputLanguage lang in langs)
        {
             //如果是搜狗输入法
             if (lang.LayoutName == "中文(简体) - 搜狗拼音输入法")
             {
                 //设置系统默认选中搜狗输入法
                 InputLanguage.CurrentInputLanguage = lang;
             }
        }

    比如:我们要打开搜狗输入法工具栏和手写板,要怎样用程序代码打开呢?

        //启动手写程序
        System.Diagnostics.Process.Start(@"C:Program Files (x86)SogouInputComponentsHandInput1.1.0.282HandInput.exe");
        //启动输入法工具
        System.Diagnostics.Process.Start(@"C:Program Files (x86)SogouInput8.4.0.1039SGTool.exe");

    Ps: 打开搜狗输入法工具和手写需先安装搜狗输入法,确保版本一致(将上面版本对应文件夹名称改成你本机的名称就行了)

    三、整合例子

    1、界面设计

    button类: btnGetInput、 btnSetInput 、btnOpenHand、 btnOpenInput

    listbox类: list_showInput

    Ps: 打开输入法的手写板和输入法前提保证版本一致

    2、整体代码实现

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsForms
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 获取本地安装的输入法
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnGetInput_Click(object sender, EventArgs e)
            {
                //获取本机安装的所有输入法
                InputLanguageCollection langs = InputLanguage.InstalledInputLanguages;
                //循环遍历所有输入法
                foreach (InputLanguage lang in langs)
                {
                    //判断listbox是否存在重复值
                    if (!this.list_showInput.Items.Contains(lang.LayoutName))
                    {
                        //添加到listbox里面
                        this.list_showInput.Items.Add(lang.LayoutName);
                    }           
                }
            }
    
            /// <summary>
            /// 设置选中输入法为系统默认输入法
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnSetInput_Click(object sender, EventArgs e)
            {
                //获取本机安装的所有输入法
                InputLanguageCollection langs = InputLanguage.InstalledInputLanguages;
                //判断listbox选中集合必须大于0
                if (this.list_showInput.SelectedItems.Count > 0)
                {
                    //选中listbox选中的值
                    string selectedText = this.list_showInput.SelectedItem.ToString();
                    //遍历输入法
                    foreach (InputLanguage lang in langs) {
                        if (lang.LayoutName == selectedText) {
                            //设置系统默认选中输入法
                            InputLanguage.CurrentInputLanguage = lang;
                        }
                    }            
                }
                else {
                    MessageBox.Show("未选中输入法,请选择!");
                }
            }
    
    
            /// <summary>
            /// 打开搜狗输入法的手写板
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnOpenHand_Click(object sender, EventArgs e)
            {
                try
                {
    
                    //获取手写板按钮的值
                    string handText = this.btnOpenHand.Text;
                    if (handText == "打开手写板")
                    {
                        //启动手写程序
                        System.Diagnostics.Process.Start(@"C:Program Files (x86)SogouInputComponentsHandInput1.1.0.282HandInput.exe");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("未安装搜狗输入法的手写板,无法打开!");
                    return;
                }
            }
    
    
            /// <summary>
            /// 打开搜狗输入法程序
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnOpenInput_Click(object sender, EventArgs e)
            {
                try
                {
    
                    //获取输入法按钮的值
                    string inputText = this.btnOpenInput.Text;
                    if (inputText == "打开输入法")
                    {
                        //启动输入法工具
                        System.Diagnostics.Process.Start(@"C:Program Files (x86)SogouInput8.4.0.1039SGTool.exe");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("未找到特定版本的搜狗输入法,无法打开!");
                    return;
                }
            }
        }
    }

    3、界面演示

    1)获取本机安装的所有输入法

    2)设置默认输入法为输出语言(选中输入法)

    设置输入法后,显示效果

    3、打开手写板功能

    点击按钮,打开搜狗输入法程序

     4、打开输入法工具栏

    这种情况是输入法的工具栏找不到,可以通过这个打开

    点击按钮后,打开输入法工具栏

  • 相关阅读:
    初识面向对象
    Git 子模块
    至今为止项目中遇到的问题
    vuex , 简单入(liao)门(jie)
    Git rebase
    Git
    js设计模式工厂模式
    vue slot
    Jquery学习,一道笔试题:关于表格【最近记】
    闭包与this学习
  • 原文地址:https://www.cnblogs.com/xielong/p/6744338.html
Copyright © 2020-2023  润新知