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)\SogouInput\Components\HandInput\1.1.0.282\HandInput.exe");
    //啟動輸入法工具
    System.Diagnostics.Process.Start(@"C:\Program Files (x86)\SogouInput\8.4.0.1039\SGTool.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)\SogouInput\Components\HandInput\1.1.0.282\HandInput.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)\SogouInput\8.4.0.1039\SGTool.exe");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("未找到特定版本的搜狗輸入法,無法打開!");
                return;
            }
        }
    }
}

3、界面演示

1)獲取本機安裝的所有輸入法

2)設置默認輸入法為輸出語言(選中輸入法)

設置輸入法后,顯示效果

3、打開手寫板功能

點擊按鈕,打開搜狗輸入法程序

 

 4、打開輸入法工具欄

這種情況是輸入法的工具欄找不到,可以通過這個打開

點擊按鈕后,打開輸入法工具欄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM