一、问题:

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

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 > )
{
//选中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、打开输入法工具栏

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

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

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

  1. c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

    我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...

  2. c#中如何获取本机MAC地址、IP地址、硬盘ID、CPU序列号等系统信息

    我们在利用C#开发桌面程序(Winform)程序的时候,经常需要获取一些跟系统相关的信息,例如用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统名称.物理内存等. 首先需要引入命名空间: us ...

  3. Winform中怎样获取项目图片资源并转换为Image对象

    场景 DevExpress的TreeList怎样给树节点设置图标: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10274554 ...

  4. Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  5. CentOS7.5安装python3并设置成系统默认python环境

    1.环境说明 系统版本:CentOS7. 安装的python版本: 2.编译环境准备(如果出现文件解压错误,wget命令无法下载等各种小意外,先把下面的环境安装一遍) yum install zlib ...

  6. .net中c#获取本机IP地址实例代码

    * 在使用前,一定要注意在头部加上引用: using System.Net; 代码如下: using System; using System.Collections.Generic; using S ...

  7. winform 中如何获取debug目录的路径

    项目中需要在debug启动目录创建文件夹,所以先获取debug路径: var debugPath = System.AppDomain.CurrentDomain.BaseDirectory;

  8. C# Winform中如何获取文件名与文件路径

    获取文件名方法: 用System.IO.Path.GetFileName和System.IO.Path.GetFileNameWithoutExtension(无扩展名)的方法 获取文件路径方法: / ...

  9. PHP中curl获取本机虚拟主机接口

    在PHP的curl代码中增加header可解决此问题. $header = array( "Host: 你的域名(不能包含http://)", "Accept: text ...

随机推荐

  1. 06: Django Admin

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  2. 20145304 Exp6 信息搜集与漏洞扫描

    20145304 Exp6 信息搜集与漏洞扫描 实验后回答问题 (1)哪些组织负责DNS,IP的管理. NSI负责Internet顶级域名系统的注册.协调与维护,IAIA负责Internet的地址资源 ...

  3. 20145208 蔡野 《网络对抗》Exp4 恶意代码分析

    20145208 蔡野 <网络对抗>Exp4 恶意代码分析 问题回答 总结一下监控一个系统通常需要监控什么.用什么来监控. 监控一个系统通常需要监控这个系统的注册表,进程,端口,服务还有文 ...

  4. 自定义Web框架与jinja2模板

    web应用与web框架 web应用 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_reque ...

  5. P4879 ycz的妹子

    思路 让你干啥你就干啥呗 查询第x个妹子就get一下再修改 这里稳一点就维护了三个东西,也许两个也可以 代码 #include <iostream> #include <cstdio ...

  6. 棋盘状态压缩dp

    状态压缩入门DP整理 只针对入门 一般都是用2进制的方法,压缩成一个数,所以n的范围都会特变小 一些套路 状态一般是很多的,可以搜索或者位运算筛选一下,基本都是这样的吧 当要存两个状态或者数组存不下的 ...

  7. HDU 4638Group (莫队)

    Group Problem Description There are n men ,every man has an ID(1..n).their ID is unique. Whose ID is ...

  8. 51nod 1103 N的倍数

    1103 N的倍数   一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8, ...

  9. BZOJ1407: [Noi2002]Savage exgcd

    Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, Li表示每个野人所住的初始洞穴编号,每年走过的洞穴 ...

  10. Linux下替换默认版本的protobuf

    1. 下载 下载地址,我下载的是protobuf-all-3.5.0.tar.gz,尽量下载all,里面包含protobuf库的所有文件. 2. 编译 ./configure make make in ...