您现在的位置是:首页
>
关闭软键盘快捷键 VS2005中C#用代码打开软键盘
VS2005中C#用代码打开软键盘 前段时间研究过API 后来由于工作关系就没有再玩C# 而别说API了 今天晚上正好加班 等其他部门出活等到凌晨一点多了 还没有动静 就趁机耍一耍了 正好学习一下VS
VS2005中C#用代码打开软键盘

前段时间研究过API 后来由于工作关系就没有再玩C# 而别说API了 今天晚上正好加班 等其他部门出活等到凌晨一点多了 还没有动静 就趁机耍一耍了 正好学习一下VS 以前曾经见别人CSDN上面问过如何用程序打开软键盘 我也关注过 可没有结果 在网上搜了一下也没有能找出满意的答案 今天就拿这个开开刀吧 反正大项目也没有 只是一个小功能 结果没曾想 弄出来了 也有好久没有更新我的这一亩三分田了 就放上来了 献给那些为中国共享软件和提高中国程序水平作努力的人们 注 程序是在VS 里面 注意一下 控件需要自己添加了 一个ComboBox 一个Textbox 一个Button 直接拖进去没有更改name 以下程序开始 ================================== using System; using System Collections Generic; using System ComponentModel; using System Data; using System Drawing; using System Text; using System Windows Forms; using System Runtime InteropServices; namespace InputLanguageSwitch { /// <summary> /// 获取系统所有的输入法 并可以程序改变当前输入法 打开关闭软键盘 /// 程序 房客 /// QQ /// Blog /// </summary> public partial class Form : Form { public Form () { InitializeComponent(); this InputLanguageChanged += new InputLanguageChangedEventHandler(Form _InputLanguageChanged); } void Form _InputLanguageChanged(object sender InputLanguageChangedEventArgs e) { //throw new Exception( The method or operation is not implemented ); for( int i= ;i<boBox Items Count;i++) { if (InputLanguage CurrentInputLanguage LayoutName == boBox Items[i] ToString()) { boBox SelectedIndex = i; } } } private void boBox _SelectedIndexChanged(object sender EventArgs e) { string strTemp = boBox Items[boBox SelectedIndex] ToString(); InputLanguageCollection collects = InputLanguage InstalledInputLanguages; for (int i = ; i < collects Count; i++) { if (collects[i] LayoutName == strTemp) InputLanguage CurrentInputLanguage = collects[i]; } } private void Form _Load(object sender EventArgs e) { InputLanguageCollection collects = InputLanguage InstalledInputLanguages; for (int i = ; i < collects Count; i++) { boBox Items Add(collects[i] LayoutName); } boBox SelectedIndex = collects IndexOf(InputLanguage CurrentInputLanguage); } private void button _Click(object sender EventArgs e) { this textBox Focus(); IntPtr hwndInput = ImmGetContext(this Handle); IntPtr dw = IntPtr Zero; IntPtr dw = IntPtr Zero; bool isSuccess = ImmGetConversionStatus(hwndInput ref dw ref dw ); if (isSuccess) { int intTemp = dw ToInt () & IME_CMODE_SOFTKBD; if (intTemp > ) dw = (IntPtr)(dw ToInt () ^ IME_CMODE_SOFTKBD); else dw = (IntPtr)(dw ToInt () IME_CMODE_SOFTKBD); } isSuccess = ImmSetConversionStatus(hwndInput dw dw ); ImmReleaseContext(this Handle hwndInput); } public const int IME_CMODE_SOFTKBD = x ; [DllImport( imm dll EntryPoint = ImmGetContext )] public static extern IntPtr ImmGetContext( IntPtr hwnd ); [DllImport( imm dll EntryPoint = ImmGetConversionStatus )] public static extern bool ImmGetConversionStatus( IntPtr himc ref IntPtr lpdw ref IntPtr lpdw ); [DllImport( imm dll EntryPoint = ImmSetConversionStatus )] public static extern bool ImmSetConversionStatus( IntPtr himc IntPtr dw IntPtr dw ); [DllImport( imm dll EntryPoint = ImmReleaseContext )] public static extern int ImmReleaseContext( IntPtr hwnd IntPtr himc ); } } ============================== 代码结束 另外 也可以直接执行OSK而直接打开虚拟键盘 不过这个和软键盘是不一样的 现在反钓鱼的软件越来越多了 祝大家共同进步 谢谢大家的支持 昨天晚上发的 到现在已经有好几个人加我问我了 为了方便大家 我把源程序一并也发在附件里 以供大家下载参考 点击下载 lishixinzhi/Article/program/net/201311/11474
很赞哦! (1079)