一、问题:

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

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. 20145205武钰《网络对抗》web安全基础实践

    实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的 防御手 ...

  2. 关于python环境的一些安装设置

    操作系统Redhat Linux,自带python2.6.Python程序的运行其实相当简单,只需在操作系统中安装并配置好python环境即可,和运行java需要配置jre一样(哪里简单,真简单就不会 ...

  3. bootstrap3

    bs是基于html5和css3的, h5和css3是今后的趋势. html5只是说文档的 "标准"是h5, 但是文档的类型仍然是 html. 所以在写文档类型的时候, 就不能要那个 ...

  4. react 为元素添加自定义事件监听器

    https://zhenyong.github.io/react/tips/dom-event-listeners.html class MovieItem extends React.Compone ...

  5. Unity 之 transform

    transform.Translate 1.function Translate (translation : Vector3, relativeTo : Space = Space.Self) : ...

  6. hdu 2586 How far away ? 带权lca

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) P ...

  7. Ubuntu14.04 ,libboost_filesystem.so.1.54.0: cannot open shared object file: No such file or directory

    macname@ubuntu:/opt$ roslaunch blarospack : error : cannot open shared object file: No such file or ...

  8. rem的计算

    (function (doc, win) { console.log("dpr:"+win.devicePixelRatio); var docEle = doc.document ...

  9. C++ 多态性和虚函数

    2017-06-27 19:17:52 C++面向对象编程的一个重要的特性就是多态性,而多态性的实现需要依赖虚函数的帮助. 一.多态的作用: 隐藏实现细节,使得代码能够模块化: 接口重用,实现“一个接 ...

  10. NHibernate 映射关系

    基本映射关系如下: NHibernate类型 .NET类型 Database类型 备注 AnsiChar System.Char DbType.AnsiStringFixedLength - 1 ch ...