国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#用代碼打開軟鍵盤

2019-11-18 17:12:12
字體:
來源:轉載
供稿:網友

前段時間研究過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.survivalescaperooms.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.VEVb.com/files/sxlfybb/InputLanguageSwitch.rar


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 四川省| 五寨县| 静海县| 松滋市| 金门县| 微山县| 阳江市| 左贡县| 班戈县| 北票市| 平果县| 阿拉善左旗| 景洪市| 南通市| 千阳县| 哈尔滨市| 华亭县| 宿松县| 和平县| 本溪市| 阿坝| 贵州省| 钟山县| 白山市| 商南县| 汤阴县| 敦化市| 乐业县| 东阳市| 清水河县| 玉龙| 忻州市| 弋阳县| 隆安县| 民丰县| 丹凤县| 安化县| 宁陕县| 颍上县| 藁城市| 崇礼县|