欢迎光临
我们一直在努力

c#用代码打开软键盘_c#应用

建站超值云服务器,限时71元/月

前段时间研究过API,后来由于工作关系就没有再玩C#,而别说API了。今天晚上正好加班,等其他部门出活等到凌晨一点多了,还没有动静。就趁机耍一耍了,正好学习一下VS2005。
以前曾经见别人CSDN上面问过如何用程序打开软键盘,我也关注过,可没有结果。在网上搜了一下也没有能找出满意的答案。今天就拿这个开开刀吧,反正大项目也没有,只是一个小功能。结果没曾想,弄出来了。也有好久没有更新我的这一亩三分田了,就放上来了。


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


注:程序是在VS2005里面,注意一下。控件需要自己添加了。一个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:83849123
    /// Blog:http://www.cnblogs.com/sxlfybb
    /// </summary>
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.InputLanguageChanged += new InputLanguageChangedEventHandler(Form1_InputLanguageChanged);
        }


        void Form1_InputLanguageChanged(object sender, InputLanguageChangedEventArgs e)
        {
            //throw new Exception(“The method or operation is not implemented.”);
            for( int i=0;i<comboBox1.Items.Count;i++)
            {
                if (InputLanguage.CurrentInputLanguage.LayoutName == comboBox1.Items[i].ToString())
                {
                    comboBox1.SelectedIndex = i;
                }


            }
        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string strTemp = comboBox1.Items[comboBox1.SelectedIndex].ToString();
            InputLanguageCollection collects = InputLanguage.InstalledInputLanguages;
            for (int i = 0; i < collects.Count; i++)
            {
                if (collects[i].LayoutName == strTemp)
                    InputLanguage.CurrentInputLanguage = collects[i];
            }
           
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            InputLanguageCollection collects = InputLanguage.InstalledInputLanguages;
            for (int i = 0; i < collects.Count; i++)
            {
                comboBox1.Items.Add(collects[i].LayoutName);
            }
            comboBox1.SelectedIndex = collects.IndexOf(InputLanguage.CurrentInputLanguage);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            this.textBox1.Focus();
            IntPtr hwndInput = ImmGetContext(this.Handle);
            IntPtr dw1 = IntPtr.Zero;
            IntPtr dw2 = IntPtr.Zero;
            bool isSuccess = ImmGetConversionStatus(hwndInput, ref dw1, ref dw2);
            if (isSuccess)
            {
                int intTemp = dw1.ToInt32() & IME_CMODE_SOFTKBD;
                if (intTemp > 0)
                    dw1 = (IntPtr)(dw1.ToInt32() ^ IME_CMODE_SOFTKBD);
                else
                    dw1 = (IntPtr)(dw1.ToInt32() | IME_CMODE_SOFTKBD);
            }
            isSuccess = ImmSetConversionStatus(hwndInput, dw1, dw2);
            ImmReleaseContext(this.Handle, hwndInput);
        }


        public const int IME_CMODE_SOFTKBD = 0x80;


        [DllImport(“imm32.dll”, EntryPoint = “ImmGetContext”)]
        public static extern IntPtr ImmGetContext(
                IntPtr hwnd
        );
        [DllImport(“imm32.dll”, EntryPoint = “ImmGetConversionStatus”)]
        public static extern bool ImmGetConversionStatus(
                IntPtr himc,
                ref IntPtr lpdw,
                ref IntPtr lpdw2
        );
        [DllImport(“imm32.dll”, EntryPoint = “ImmSetConversionStatus”)]
        public static extern bool ImmSetConversionStatus(
                IntPtr himc,
                IntPtr dw1,
                IntPtr dw2
        );


        [DllImport(“imm32.dll”, EntryPoint = “ImmReleaseContext”)]
        public static extern int ImmReleaseContext(
                IntPtr hwnd,
                IntPtr himc
        );


    }
}


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


谢谢大家的支持,昨天晚上发的,到现在已经有好几个人加我问我了,为了方便大家,我把源程序一并也发在附件里,以供大家下载参考。


点击下载http://sxlfybb.cnblogs.com/files/sxlfybb/InputLanguageSwitch.rar

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » c#用代码打开软键盘_c#应用
分享到: 更多 (0)