切换windows系统输入法的中英文,可以忽视是哪种打字法
调用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系统输入法的中英文,可以忽视是哪种打字法的更多相关文章
- Windows系统中监控文件复制操作的几种方式
http://blog.sina.com.cn/s/blog_4596beaa0100lp4y.html 1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得 ...
- [转]Windows系统中监控文件复制操作的几种方式
1. ICopyHook 作用: 监视文件夹和打印机移动,删除, 重命名, 复制操作. 可以得到源和目标文件名. 可以控制拒绝操作. 缺点: 不能对文件进行控制. 只对Shell文件操作有效, 对原生 ...
- Mac 切换Windows 使用虚拟机, 不推荐双系统
为什么使用虚拟机而不是双系统? 1.虚拟机可以随时在两个系统之间进行切换,便于在工作时使用而不影响效率.如果是双系统,在切换到另一个系统时需要关机重启,太过麻烦. 2.虚拟机除了运行Windows之 ...
- windows系统快捷操作の基础篇
从网上汇总了一些windows系统上常用的快捷键,结合自己的使用经验,将平时使用电脑时最常用的快捷键记录在此.注意这里罗列的是平时最常用到的,其他的一般来说不怎么用到的并不在此列,如果想要完整列表,请 ...
- win8系统输入法设置
Windows 8系统自带微软拼音简捷输入法,无论是在Windows的开始屏幕新界面中还是Windows传统桌面里,按Shift键或者直接点击屏幕上的"中/英"标识即可切换中英文输 ...
- Windows 10输入法已禁用IME无法输入中文怎么办
Windows 10输入法已禁用IME无法输入中文怎么办 | 浏览:10453 | 更新:2015-03-01 14:46 | 标签:windows 1 2 3 4 5 分步阅读 Windows10系 ...
- 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客
Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...
- windows系统快捷操作の高级篇
上次介绍了windows系统上几个比较好用的软件和系统快捷键,虽然有些很方便,但是毕竟还是太少了,而且无法自定义专属于自己的快捷键.所以我写了这么一篇教程,主要介绍两个神器:windows平台上的au ...
- 如何用python在Windows系统下,生成UNIX格式文件
平时测试工作中,少不了制造测试数据.最近一个项目,我就需要制造一批可在UNIX下正确读取的文件.为确保这批文件能从FTP下载成功,开发叮嘱我:“文件中凡是遇到换行,换行符必须是UNIX下的LF,而不是 ...
随机推荐
- [Algorithm] Finding all factors of a number
12's factors are: {1,2,3,4,6,12} function factors (n) { let list = []; for (let i = 1; i < Math.s ...
- jquery resize()方法 语法
jquery resize()方法 语法 作用:当调整浏览器窗口的大小时,发生 resize 事件.resize() 方法触发 resize 事件,或规定当发生 resize 事件时运行的函数.大理石 ...
- 从Ubuntu 18.04 LTS升级到Ubuntu 18.10版本的方法
从Ubuntu 18.04 LTS升级到Ubuntu 18.10版本的方法 2018-10-18 21:08:39作者:ywnz稿源:云网牛站 本文提供从Ubuntu 18.04 LTS(Bionic ...
- 前端Web浏览器基于Flash如何实时播放监控视频画面(三)之使用ffmpeg‘推流’
本片文章只是起到抛砖引玉的作用,能从头到尾走通就行,并不做深入研究.为了让文章通俗易懂,尽量使用白话描述. 0x001: 下载ffmpeg 开源免费的推流软件有很多,这里以 ffmpeg 为例.ffm ...
- Ubuntu中安装MySQL
基本步骤: 1. sudo apt-get install mysql-server 2. apt-get install mysql-client 3. sudo apt-get install ...
- 关于开发APP接口版本不兼容的问题
关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP ...
- 源码分析系列1:HashMap源码分析(基于JDK1.8)
1.HashMap的底层实现图示 如上图所示: HashMap底层是由 数组+(链表)+(红黑树) 组成,每个存储在HashMap中的键值对都存放在一个Node节点之中,其中包含了Key-Value ...
- IIS7 部署MVC 运行不了 注意事项
经常安装完iis7或者7.5后,部署MVC3.运行后提示 403 找不到目录. 解决办法:需要重新注册下iis C:\Windows\Microsoft.NET\Framework64\v4.0.30 ...
- windows 重启java进程脚本
这个脚本用于启动和重启javaWeb程序 @echo off rem 配置端口号 set port= rem 第一层循环检查端口占用的pid for /f "tokens=5" % ...
- 解决oracle 物化视图刷新失败
oracle 物化视图刷新失败可能原因: 1.视图未建立物化视图日志 2.基表为授权给用户 1.物化视图语法 create materialized view [view_name] refresh ...