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

简介: 原文:C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板一、问题: 今天,我整理了一下两个问题 1、如何获取本机安装所有输入法,并设置为系统输出语言 2、如何打开搜狗拼音输入法工具栏和手写板: 二、解决方法 比如:我们要设置搜狗输入法为本机输...
原文: 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、打开输入法工具栏

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

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

 

目录
相关文章
|
2月前
|
存储 开发框架 .NET
C#语言究竟隐藏了哪些秘密?一文带你揭开编程界的神秘面纱
【8月更文挑战第22天】C#是微软推出的面向对象编程语言,以其简洁的语法和强大的功能,在软件开发领域占据重要地位。作为一种强类型语言,C#确保了代码的可读性和可维护性。它支持多种数据类型,如整型、浮点型及复合类型如类和结构体。类是核心概念,用于定义对象的属性和行为。C#还包括方法、异常处理、集合类型如列表和字典,以及泛型和LINQ等高级特性,支持异步编程以提高应用响应性。.NET Core的推出进一步增强了C#的跨平台能力。
67 3
|
2天前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
9 1
|
1月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
14天前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
47 2
|
2天前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
|
14天前
|
API C# Windows
【C#】在winform中如何实现嵌入第三方软件窗体
【C#】在winform中如何实现嵌入第三方软件窗体
38 0
|
1月前
|
前端开发 Java C#
C#语言的优缺点?
C#语言的优缺点?
65 3
|
1月前
|
安全 IDE Java
C#语言的
C#语言是一种面向对象的编程语言
22 1
|
1月前
|
IDE C# 开发工具
C# 语言的主要优势是什么?
C# 语言的主要优势是什么?
60 2
|
18天前
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
50 0