C#打开软键盘的方法

以前曾经见别人CSDN上面问过如何用C#打开软键盘,我也关注过,可没有结果。在网上搜了一下也没有能找出满意的答案。今天就拿这个开开刀吧,反正大项目也没有,只是一个小功能。结果没曾想,弄出来了。也有好久没有更新我的这一亩三分田了,就放上来了。

创新互联公司10多年成都定制网页设计服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都定制网页设计及推广,对成都花箱等多个行业拥有丰富的网站维护经验的网站建设公司。

献给那些为中国共享软件和提高中国程序水平作努力的人们。

注:程序是在VS2005里面,注意一下。控件需要自己添加了。一个ComboBox,一个Textbox,一个Button,直接拖进去没有更改name

用C#打开软键盘程序开始

 
 
 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Runtime.InteropServices;
  9. namespace InputLanguageSwitch
  10. {
  11. /// 
  12. /// 获取系统所有的输入法,并可以程序改变当前输入法;打开关闭软键盘。
  13. /// 程序:房客
  14. /// QQ:83849123
  15. /// Blog:http://www.cnblogs.com/sxlfybb
  16. /// 
  17. public partial class Form1 : Form
  18. {
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. this.InputLanguageChanged += new InputLanguageChangedEventHandler
    (Form1_InputLanguageChanged);
  23. }
  24. void Form1_InputLanguageChanged(object sender, InputLanguageChangedEventArgs e)
  25. {
  26. //throw new Exception("The method or operation is not implemented.");
  27. for( int i=0;i;i++)
  28. {
  29. if (InputLanguage.CurrentInputLanguage.LayoutName == comboBox1.Items[i].ToString())
  30. {
  31. comboBox1.SelectedIndex = i;
  32. }
  33. }
  34. }
  35. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  36. {
  37. string strTemp = comboBox1.Items[comboBox1.SelectedIndex].ToString();
  38. InputLanguageCollection collects = InputLanguage.InstalledInputLanguages;
  39. for (int i = 0; i < collects.Count; i++)
  40. {
  41. if (collects[i].LayoutName == strTemp)
  42. InputLanguage.CurrentInputLanguage = collects[i];
  43. }
  44. }
  45. private void Form1_Load(object sender, EventArgs e)
  46. {
  47. InputLanguageCollection collects = InputLanguage.InstalledInputLanguages;
  48. for (int i = 0; i < collects.Count; i++)
  49. {
  50. comboBox1.Items.Add(collects[i].LayoutName);
  51. }
  52. comboBox1.SelectedIndex = collects.IndexOf(InputLanguage.CurrentInputLanguage);
  53. }
  54. private void button1_Click(object sender, EventArgs e)
  55. {
  56. this.textBox1.Focus();
  57. IntPtr hwndInput = ImmGetContext(this.Handle);
  58. IntPtr dw1 = IntPtr.Zero;
  59. IntPtr dw2 = IntPtr.Zero;
  60. bool isSuccess = ImmGetConversionStatus(hwndInput, ref dw1, ref dw2);
  61. if (isSuccess)
  62. {
  63. int intTemp = dw1.ToInt32() & IME_CMODE_SOFTKBD;
  64. if (intTemp > 0)
  65. dw1 = (IntPtr)(dw1.ToInt32() ^ IME_CMODE_SOFTKBD);
  66. else
  67. dw1 = (IntPtr)(dw1.ToInt32() IME_CMODE_SOFTKBD);
  68. }
  69. isSuccess = ImmSetConversionStatus(hwndInput, dw1, dw2);
  70. ImmReleaseContext(this.Handle, hwndInput);
  71. }
  72. public const int IME_CMODE_SOFTKBD = 0x80;
  73. [DllImport("imm32.dll", EntryPoint = "ImmGetContext")]
  74. public static extern IntPtr ImmGetContext(
  75. IntPtr hwnd
  76. );
  77. [DllImport("imm32.dll", EntryPoint = "ImmGetConversionStatus")]
  78. public static extern bool ImmGetConversionStatus(
  79. IntPtr himc,
  80. ref IntPtr lpdw,
  81. ref IntPtr lpdw2
  82. );
  83. [DllImport("imm32.dll", EntryPoint = "ImmSetConversionStatus")]
  84. public static extern bool ImmSetConversionStatus(
  85. IntPtr himc,
  86. IntPtr dw1,
  87. IntPtr dw2
  88. );
  89. [DllImport("imm32.dll", EntryPoint = "ImmReleaseContext")]
  90. public static extern int ImmReleaseContext(
  91. IntPtr hwnd,
  92. IntPtr himc
  93. );
  94. }
  95. }

用C#打开软键盘代码结束。

另外,也可以直接执行OSK而直接打开虚拟键盘,不过这个和软键盘是不一样的。
现在反钓鱼的软件越来越多了,祝大家共同进步。

当前题目:C#打开软键盘的方法
网页路径:http://www.shufengxianlan.com/qtweb/news23/191873.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联