调用windows的API

//用户获取当前输入法句柄
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hWnd); //用于获取当前输入法的状态
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr hIMC,
ref int conversion, ref int sentence); //用于设置输入法的状态
[DllImport("imm32.dll")]
public static extern bool ImmSetConversionStatus(IntPtr hIMC, int conversion, int sentence);

有了这三个方法之后,设置系统的输入如法就很方便,下面是参数相关的一些内容

双打模式(包括单双混合,比如微软输入法)

输入法状态 mode值
中文输入-半角-中文符号 -2147482623
中文输入-全角-中文符号 -2147482615
中文输入-半角-英文符号 -2147483647
中文输入-全角-英文符号 -2147483839
英文输入-半角-中文符号 -2147482624
英文输入-全角-中文符号 -2147482616
英文输入-半角-英文符号 -2147483648
英文输入-全角-英文符号 -2147483640

标准模式(全拼模式,比如智能ABC的标准模式)

输入法状态 mode值
中文输入-半角-中文符号 1025
中文输入-全角-中文符号 1033
中文输入-半角-英文符号 1
中文输入-全角-英文符号 9
英文输入-半角-中文符号 1024
英文输入-全角-中文符号 1032
英文输入-半角-英文符号 0
英文输入-全角-英文符号 8

这样就可以设置我们想要设置的打字法模式了,下面是我的一个demo,当输入的是中文,就让打字法继续为中文输入模式,是英文就继续为英文模式

 private void textBox1_TextChanged(object sender, EventArgs e)
{
Regex reg = new Regex(@"[\u4e00-\u9fa5]");
string temp = textBox1.Text;
string lastStr = temp.Substring(temp.Length - , );
IntPtr prt = ImmGetContext(this.Handle);
int curIMode = ;
int curISentence = ;
ImmGetConversionStatus(prt,ref curIMode,ref curISentence);
if (reg.IsMatch(lastStr)&&(curIMode!=||curISentence!=))
{
//如果是中文则切换成中文输入
int iMode = ;
int iSentence = ;
if (!ImmSetConversionStatus(prt, iMode, iSentence))
{
MessageBox.Show("change error");
}
}
else if(!reg.IsMatch(lastStr)&&(curIMode!=||curISentence!=))
{ //是英文则切换成英文输入
int iMode = ;
int iSentence = ;
if (!ImmSetConversionStatus(prt, iMode, iSentence))
{
MessageBox.Show("change error");
}
}
}

切换windows系统输入法的中英文,可以忽视是哪种打字法的更多相关文章

  1. Windows系统中监控文件复制操作的几种方式

    http://blog.sina.com.cn/s/blog_4596beaa0100lp4y.html 1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得 ...

  2. [转]Windows系统中监控文件复制操作的几种方式

    1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得到源和目标文件名. 可以控制拒绝操作. 缺点: 不能对文件进行控制. 只对Shell文件操作有效, 对原生 ...

  3. Mac 切换Windows 使用虚拟机, 不推荐双系统

     为什么使用虚拟机而不是双系统? 1.虚拟机可以随时在两个系统之间进行切换,便于在工作时使用而不影响效率.如果是双系统,在切换到另一个系统时需要关机重启,太过麻烦. 2.虚拟机除了运行Windows之 ...

  4. windows系统快捷操作の基础篇

    从网上汇总了一些windows系统上常用的快捷键,结合自己的使用经验,将平时使用电脑时最常用的快捷键记录在此.注意这里罗列的是平时最常用到的,其他的一般来说不怎么用到的并不在此列,如果想要完整列表,请 ...

  5. win8系统输入法设置

    Windows 8系统自带微软拼音简捷输入法,无论是在Windows的开始屏幕新界面中还是Windows传统桌面里,按Shift键或者直接点击屏幕上的"中/英"标识即可切换中英文输 ...

  6. Windows 10输入法已禁用IME无法输入中文怎么办

    Windows 10输入法已禁用IME无法输入中文怎么办 | 浏览:10453 | 更新:2015-03-01 14:46 | 标签:windows 1 2 3 4 5 分步阅读 Windows10系 ...

  7. 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客

    Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...

  8. windows系统快捷操作の高级篇

    上次介绍了windows系统上几个比较好用的软件和系统快捷键,虽然有些很方便,但是毕竟还是太少了,而且无法自定义专属于自己的快捷键.所以我写了这么一篇教程,主要介绍两个神器:windows平台上的au ...

  9. 如何用python在Windows系统下,生成UNIX格式文件

    平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:“文件中凡是遇到换行,换行符必须是UNIX下的LF,而不是 ...

随机推荐

  1. B/S上传超大文件解决方案

    4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...

  2. Ubuntu:电源管理

    本文适用于Ubuntu 16.04,造冰箱的大熊猫@cnblogs 2018/3/4 在Ubuntu 16.04中,与电源管理相关的选项位于System Settings下的Power对话框中. 要启 ...

  3. XML -- 为什么选择XML?

    1.XML是什么,主要功能? XML全称(EXtensible Markup Language),是可扩展性标记语言. XML主要功能是用来传输和存储数据.它就是一种纯文本.只要程序能访问纯文本就能访 ...

  4. python拼音库pypinyin库详解

    # -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/6/30 9:20 from pypinyin import pinyin, lazy ...

  5. java浮点数精度问题解决方法

    基础知识回顾: BigDecimal.setScale()方法用于格式化小数点setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOW ...

  6. JQuery动画之淡入淡出动画

    1. 淡入动画 1.1 不带参数的淡入动画 格式: $(selector).fadeIn(); 示例代码: <!doctype html> <html lang="en&q ...

  7. 使用powershell管理域用户

    在域内环境中,常常需要使用命令行管理域用户,此时可以使用Active Directory中的命令行工具Dsquery.exe,或CSVE,以及Ldifde等,其实,使用Windows Powershe ...

  8. hbase基于hue的查询语法

    hbase基于hue的查询语法 登录地址 https://hue-ui.xiaoniangao.cn 界面操作说明 进入hue中的hbase 进入表的查询界面 界面说明 查询语句 ,表示结束查询,可以 ...

  9. js上传图片获取原始宽高

    以vue上传图片为例: <template> <div> <input type="file" @change="uploadFile($e ...

  10. Spring常用的jar+普通构造注入

    常用工具 jar 说明 提供AOP(面向切面编程)实现:spring -aop spring提供对AspectJ框架的整合:spring-aspects 提供 IoC(控制反转)的基础实现:sprin ...