社区
C#
帖子详情
如何控制当前输入法?
hlf
2002-07-03 03:47:53
我想当前焦点在一个文本框时当前输入法自动变成为中文,而另一个文本框获得焦点时,输入法自动变成英文,如何实现?
...全文
359
22
打赏
收藏
如何控制当前输入法?
我想当前焦点在一个文本框时当前输入法自动变成为中文,而另一个文本框获得焦点时,输入法自动变成英文,如何实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hlf
2002-07-24
打赏
举报
回复
结贴了
hlf
2002-07-23
打赏
举报
回复
真的没人知道吗?
Hogwarts
2002-07-23
打赏
举报
回复
To hlf:
其实,在seaman_X提供的链接中,已经对如何在WinForm中控制输入法作了相当详细地介绍了。针对您所关心的两个问题,即如何获取系统中所有的输入法,以及如何根据输入语言及其他特殊要求选择特定的输入法,下面我以两段程序片断再加以说明。
1)遍历系统中所有的输入法,可以用以下程序片断:
foreach(InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
this.textBox1.Text += "\r\nName> "+lang.LayoutName+"\r\nCulture> "+lang.Culture.Name + "\r\n";
}
运行的结果类似:
Name> Chinese (Simplified) - Microsoft Pinyin IME 3.0
Culture> zh-CN
Name> Chinese (Simplified) - US Keyboard
Culture> zh-CN
Name> Chinese (Traditional) - New Phonetic
Culture> zh-TW
Name> Japanese Input System (MS-IME2002)
Culture> ja-JP
Name> Chinese (Traditional) - US Keyboard
Culture> zh-TW
Name> Japanese
Culture> ja-JP
得到系统中所有的输入法以后,就可以通过Culture和Name来选择特定的输入语种和输入法。
2)切换到简体中文输入法
if(InputLanguage.DefaultInputLanguage.LayoutName.IndexOf("Keyboard")==-1 && InputLanguage.DefaultInputLanguage.Culture.Name.Equals("zh-CN"))
{
InputLanguage.CurrentInputLanguage=InputLanguage.DefaultInputLanguage;
}
else
{
foreach(InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if(lang.Culture.Name.Equals("zh-CN") && lang.LayoutName.IndexOf("Keyboard")==-1)
{
InputLanguage.CurrentInputLanguage=lang;
break;
}
}
}
在这段程序中,首先对系统默认的输入法进行判断,如果默认输入法的Culture是zh-CN,而且输入法名字中不包含"Keyboard"字样,说明默认输入法是一种简体中文输入法,而且不是"Chinese (Simplified) - US Keyboard",这时就将系统默认的输入法作为当前输入法。
如果以上条件不满足,则对系统中安装的所有输入法进行遍历,将遍历时所遇到的第一种Culture为zh-CN而且输入法名字不包含"Keyboard"字样的输入法作为当前输入法。
Hogwarts - S(u)ddenly dis@ppeared...
-
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
hlf
2002-07-22
打赏
举报
回复
up一下
wangjingjing390
2002-07-21
打赏
举报
回复
up
xxqqhh_nn
2002-07-18
打赏
举报
回复
我来说说我的想法没有人会反对吧:(
我最近在做录入程序,我觉得对于录入输入法的控制嘛。。。。。
第一次输入法的切换应该由用户来进行。
当到需要切换的文本框时:
1.就模拟键盘输入(ctrl+space)。
2.或者捏,先获取e文输入法的索引。再转为e文。
提交后,比较最后一次的输入法和最开始的输入法决定是否需要切换。。。。
说了那么多,我不知道怎么样模拟键盘输入。。。。。也不知道怎么样获取e文输入法的。。。。。。。。
哪为高手写写喂。谢!
xxqqhh_nn
2002-07-17
打赏
举报
回复
顶
hlf
2002-07-17
打赏
举报
回复
UP 一下
hlf
2002-07-11
打赏
举报
回复
To:seaman_X(水手)
你如何判断是否符合语言要求的呢?
hlf
2002-07-11
打赏
举报
回复
To:seaman_X(水手)
能说说你具体怎样判断是否符合语言要求吗?
seaman_X
2002-07-10
打赏
举报
回复
文章中控制输入法的类不是可以得到输入法的语言吗?这样可以用循环,如果符合语言要求就选定,不可能指定什么输入法的,因为用户可能没有装这个输入法。
我写了一个程序就用到这个类,效果很好阿。
seaman_X
2002-07-10
打赏
举报
回复
文章中控制输入法的类不是可以得到输入法的语言吗?这样可以用循环,如果符合语言要求就选定,不可能指定什么输入法的,因为用户可能没有装这个输入法。
我写了一个程序就用到这个类,效果很好阿。
hlf
2002-07-08
打赏
举报
回复
To:bearontree(树袋熊)
用户要用到的输入法知道啊,这是由我提供的输入控件决定的啊,有些是
要输入汉字的(比如:姓名),这些当然是用汉字啦
你怎么知道默认的输入法是中文的呢?有时用户的机子里默认输入法就是
英文的啊
bearontree
2002-07-08
打赏
举报
回复
那你也不知道用户到底要使用什么输入法啊!
我觉得弹出默认中文输入法就可以了
bearontree
2002-07-08
打赏
举报
回复
那你也不知道用户到底要使用什么输入法啊!
我觉得弹出默认中文输入法就可以了
hlf
2002-07-08
打赏
举报
回复
to:cancan28(cancan)
请先看清楚一点我在你上面的一条留言好吗?
索引为3的输入法你知道是什么输入法吗?如果是你自己的机子那当然知道,
但如果是任一个用户的机子你还能知道吗?所以就不一定会得到自己想要的
输入法,还有更好的办法吗?
hlf
2002-07-07
打赏
举报
回复
To:cancan28(cancan)
请看清楚我在你上面一条的发言好吗?
你写的一句:
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[3];
你知道索引为3的输入法是什么吗?如果是你用的机子那当然知道,但如果是
任一用户的机子,那么索引为3的输入法就不一定是你想得到的输入法了。
E8-苏康胜
2002-07-05
打赏
举报
回复
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[3];
InputLanguage类的方法大部分为静态的不需要实例化直接调用
命名空间为:System.Windows.Forms
具体程序中怎么做就你自己自由发挥了
E8-苏康胜
2002-07-05
打赏
举报
回复
InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[3];
InputLanguage类的方法大部分为静态的不需要实例化直接调用
命名空间为:System.Windows.Forms
具体程序中怎么做就你自己自由发挥了
bearbaba
2002-07-04
打赏
举报
回复
我像一般中文系统上在win98以上,微软拼音输入法总是有的
加载更多回复(2)
用C#
控制
当前
输入法
用C#
控制
当前
输入法
,用户不必手工切换
输入法
。
delphi 的
输入法
编程检测
输入法
delphi 的
输入法
编程检测
输入法
,检测
当前
的
输入法
的状态,用于对
输入法
进行
控制
的软件,例如打字比赛软件
VB模拟切换Windows
输入法
.rar
VB模拟切换Windows
输入法
,实现的是软控件,也就是用程序来
控制
输入法
这间的切换,并不是按键盘上的热键来实现,是在不退出
输入法
的情况下,切换中文、英文
输入法
,类似Sogou
输入法
的“shift”键的功能。
通用电脑
输入法
设置工具
IMETool 已经推出有几年了,因为我一向比较懒,没有写过必要的说明,至今有许多朋友不能正确使用它功能(看起来是我设计得比较烂,让人看不明白 )。下面我就几个常见问题做些说明。 1、问:Windows 系统本身就自带
输入法
管理功能,要 IMETool 何用? 答: ⑴系统自带
输入法
管理功能无法调整各
输入法
顺序,而 IMETool 可以实时调整。 ⑵系统自带
输入法
管理功能只能设置 Ctrl + Alt + 1 之类有限的热键,且有时无法恢复初始设置,删除
输入法
时无法自动将其热键一并删除。IMETool 大大突破了热键设置局限性,可以实现 1092 种不同的热键组合。这是 IMETool 独一无二的功能。 ⑶系统自带
输入法
管理功能没有从注册表删除
输入法
功能。 ⑷另外 IMETool 还支持丰富的命令行参数和脚本,可以通过命令行完成图形界面中的所有功能,非常灵活方便。 2、问:启动系统后总是会默认打开某一
输入法
,如何才能将其关闭? 答:在 IMETool 的
输入法
列表中,处在第一位的
输入法
即为默认
输入法
。如图一中①处,将“中文 (简体) – 美式键盘”设在第一位,系统启动时就不会再自动打开某
输入法
了。 3、问:如何才能用一个热键(如 Ctrl + 空格)快速地打开/关闭我最常用的
输入法
? 答:大家知道,默认的打开/关闭
输入法
热键是“Ctrl + 空格”,它其实就是来回切换位于
输入法
列表中前两位的
输入法
。所以只须将最常用的
输入法
排在列表中第二位即可,比如我最常用极点五笔
输入法
,就将其放在图一中②处。 4、问:如何快速打开某
输入法
的属性或热键对话框? 答:在
输入法
列表“名称”一列上双击,即可快速打开
输入法
属性设置对话框;即热键一列双击则打开热键设置对话框。 5、问:“键盘”按钮有何作用? 答:此功能极少用到。一些中文
输入法
在安装后使用系统默认的英文键盘定义,对于使用其它国别键盘的用户,会产生键位错误的情况。此时可使用 IMETool 的键盘布局重定义功能将其设置为正确的国别即可。注意:在点击“键盘”按钮打开的对话框中选择“确定”后,会立即修改注册表中的相应项目,请谨慎使用。 6、问:
输入法
风格中的“
输入法
指示器”和“高级文字服务”有什么区别? 答:在 Office XP 未出现之前,Win 9X 和 Windows 2000 中一直使用
输入法
指示器(internat.exe),即在任务栏系统托盘区中显示
输入法
列表的蓝色 En 或 CH 图标(不同配色方案下图标颜色可能不同)。 从 Office XP 开始,微软使用高级文字服务(ctfmon.exe)来代替
输入法
指示器,其特点是其
输入法
列表可在屏幕上任意移动,并可缩小至任务栏(但不在系统托盘区)。在 Windows XP/2003 系统中已经用高级文字服务完全取代了
输入法
指示器,所以要想使用
输入法
指示器,只能从 Windows 2000 系统中复制出 Internat.exe 和 indicdll.dll(前者必须的库文件)来使用。 7、问:调整
输入法
顺序为何有时不起作用? 答:此功能主要适用于使用
输入法
指示器的情况,在高级文字服务模式下,系统往往会记住你上次使用的
输入法
,并动态调整。另外在 Win95/NT 系统下,调整顺序需要重启系统方可生效。 8、问:使用 IMETool 进行一些设置后,默认的 Ctrl + Shift 切换
输入法
热键不能用了? 答:这是反映最多的一个问题,在此详细说明一下。 在高级文字服务模式下(ctfmon.exe),有“切换输入语言”和“切换键盘布局”两种热键,两者的热键必须为Ctrl + Shift 和 Alt + Shift 中的一个,即如果前者的热键是 Ctrl + Shift,后者的热键就必须是 Alt + Shift,其设置保存在注册表中。“切换输入语言”是指即在安装的不同语言间切换,如中文(中国)、美国英语等。“切换键盘布局”是指切换不同的
输入法
。 而在
输入法
指示器模式下(internat.exe),只有切换
输入法
这一种功能,而其从注册表读取的热键配置正好是高级文字服务模式下的“切换输入语言”的配置。由此可知,同样的注册表配置,高级文字服务和
输入法
指示器两种模式下切换
输入法
的热键正好是 相反的。 所以这个问题并不是 Ctrl + Shift 热键不能用了,而是默认变成了 Alt + Shift,可在设置中改回。 注:在 2.6.5 版本中,已经解决了这个问题,无须再手工切换。 9、问:在使用 IMETool 后,有时
输入法
的指示条会消失。 答:在 IMETool 的其它设置中,有一个打开/关闭
输入法
指示条的选项,是调用了一个 API 函数来实现的。不知何故,其只对
当前
打开的
输入法
有效,对其它
输入法
可能会起到相反的作用,不过在系统重启后会恢复正常。此问题有待于以后研究解决。 建议:在使用 IMETool 之前,关闭所有打开的
输入法
,因为已运行的不同程序下可能会打开不同的
输入法
,所以要逐个关闭。 10、问:IMETool 的修复功能有哪些,为何在界面中找不到? 答:IMETool 可以修复一些常见的
输入法
混乱情况:如: ⑴某
输入法
已经卸载,但仍在
输入法
列表中残留了条目。 ⑵某
输入法
已经卸载,但其先前设置的热键并没有取消。 ⑶高级文字服务模式下,将
输入法
列表条最小化后,任务栏上不出现语言栏。 ⑷2000/XP 提示“检测到不兼容的键盘驱动程序。该对话框已被停用。”,并且无法通过
控制
面板添加删除
输入法
。 以上修复过程完全是自动进行的,不需要人工干预,故没有在界面中设计。 11、问:软件包里附带的 internat.exe 和 indicdll.dll 文件有何作用? 答:这两个文件是从Windows 2000 简体中文专业版中提取的,并做过一些修改。Windows XP/2003 若想使用“
输入法
指示器”风格工作时需要将这两个文件复制到系统文件夹下使用。建议将 imetool.exe 文件也复制到系统文件夹下,这样就可以从
输入法
指示器右键属性中直接调用 IMETool 了。 12、问:如何卸载 IMETool? 答:IMETool 只有一个主文件,无须安装,自然也无须卸载,直接删除即可。 13、问:一些杀毒软件报 imetool.exe 为“病毒”。 答:IMETool 使用 upx 压缩过,一些比较敏感的杀毒软件会报其为加壳程序(注意不是报病毒!),从 2.8.1 版开始,不再使用 upx 压缩主程序。 Silence 2009.8.14
API检测
输入法
为中文或英文并进行中英文切换C++版
https://download.csdn.net/download/x_i_n_g_z_o_u/12157072 的C++版
C#
110,539
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章