發送WIN+SAPCE鍵,WINDOWS,空格鍵

來源:互聯網
上載者:User

標籤:

鍵盤代碼部份轉自:http://www.cnblogs.com/cpcpc/archive/2011/02/22/2123055.html

 

由於喜歡用CTRL+空格鍵切換IME,在WIN8上有所不習慣,所以寫了個小程式,當按CTRL+空格鍵時向系統發送WIN+空格鍵。

首先使用全域快速鍵,監視CTRL+空格的輸入,然後再發送WIN+空格鍵。

[DllImport("user32.dll", SetLastError = true)]        public static extern bool RegisterHotKey(IntPtr hWnd, // handle to window             int id,            // hot key identifier             KeyModifiers fsModifiers,  // key-modifier options             Keys vk            // virtual-key code             );        [DllImport("user32.dll", SetLastError = true)]        public static extern bool UnregisterHotKey(IntPtr hWnd,  // handle to window             int id      // hot key identifier             );        [Flags()]        public enum KeyModifiers        {            None = 0,            Alt = 1,            Control = 2,            Shift = 4,            Windows = 8        }/// <summary>        /// 切換IME        /// </summary>        const int hotKeyId_SwitchIME = 343;/// <summary>        /// 發送WIN+空格        /// </summary>        /// <param name="bVk"></param>        /// <param name="bScan"></param>        /// <param name="dwFlags"></param>        /// <param name="dwExtraInfo"></param>        [DllImport("user32.dll")]        private static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);//在Form1_Shown時註冊快速鍵private void Form1_Shown(object sender, EventArgs e)        {Version win7ver = new Version("6.1.9999.9999");                if (Environment.OSVersion.Version.CompareTo(win7ver) > 0)                {                    //ctrl+空格切換IME              bool       bSucc = RegisterHotKey(Handle, hotKeyId_SwitchIME, KeyModifiers.Control, Keys.Space);                                    }}//發送WIN+空格 protected override void WndProc(ref Message m)        {            try            {                //固定的熱鍵訊息 0x0312                const int WM_HOTKEY = 0x0312;                switch (m.Msg)                {                    case WM_HOTKEY:                        #region 判斷哪個功能                        switch (m.WParam.ToInt32())                        {                                                        case hotKeyId_SwitchIME:                                const byte VK_LWIN = 0x5B;                                const byte VK_space = 0x20;                                const byte KEYEVENTF_KEYUP = 0x2;                                const byte KEYEVENTF_EXTENDEDKEY = 0x1;                                keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, 0);                                keybd_event(VK_space, 0, KEYEVENTF_EXTENDEDKEY, 0);                                keybd_event(VK_space, 0, KEYEVENTF_KEYUP, 0);                                keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);                                break;                        }                        #endregion                        break;                }                base.WndProc(ref m);            }            catch { }        }private void Form1_FormClosing(object sender, FormClosingEventArgs e)        {            //關閉時解除註冊                       UnregisterHotKey(Handle, hotKeyId_SwitchIME);        }

 

 

 

可在代碼中的任何地方用下列值代替鍵盤上的鍵:值 描述0x1 滑鼠左鍵0x2 滑鼠右鍵0x3 CANCEL 鍵0x4 滑鼠中鍵0x8 退格鍵0x9 TAB 鍵0xC CLEAR 鍵0xD ENTER 鍵0x10 SHIFT 鍵0x11 CTRL 鍵0x12 MENU 鍵0x13 PAUSE 鍵0x14 CAPS LOCK 鍵0x1B ESC 鍵0x20 SPACEBAR 鍵0x21 PAGE UP 鍵0x22 PAGE DOWN 鍵0x23 END 鍵0x24 HOME 鍵0x25 LEFT ARROW 鍵0x26 UP ARROW 鍵0x27 RIGHT ARROW 鍵0x28 DOWN ARROW 鍵0x29 SELECT 鍵0x2A PRINT SCREEN 鍵0x2B EXECUTE 鍵0x2C SNAPSHOT 鍵0x2D INSERT 鍵0x2E DELETE 鍵0x2F HELP 鍵0x90 NUM LOCK 鍵A 至 Z 鍵與 A - Z 字母的 ASCII 碼相同:值 描述65 A 鍵66 B 鍵67 C 鍵68 D 鍵69 E 鍵70 F 鍵71 G 鍵72 H 鍵73 I 鍵74 J 鍵75 K 鍵76 L 鍵77 M 鍵78 N 鍵79 O 鍵80 P 鍵81 Q 鍵82 R 鍵83 S 鍵84 T 鍵85 U 鍵86 V 鍵87 W 鍵88 X 鍵89 Y 鍵90 Z 鍵0 至 9 鍵與數字 0 - 9 的 ASCII 碼相同:值 描述48 0 鍵49 1 鍵50 2 鍵51 3 鍵52 4 鍵53 5 鍵54 6 鍵55 7 鍵56 8 鍵57 9 鍵下列常數代表數字鍵台上的鍵:值 描述0x60 0 鍵0x61 1 鍵0x62 2 鍵0x63 3 鍵0x64 4 鍵0x65 5 鍵0x66 6 鍵0x67 7 鍵0x68 8 鍵0x69 9 鍵0x6A MULTIPLICATION SIGN (*) 鍵0x6B PLUS SIGN (+) 鍵0x6C ENTER 鍵0x6D MINUS SIGN (-) 鍵0x6E DECIMAL POINT (.) 鍵0x6F DIVISION SIGN (/) 鍵下列常數代表功能鍵:值 描述0x70 F1 鍵0x71 F2 鍵0x72 F3 鍵0x73 F4 鍵0x74 F5 鍵0x75 F6 鍵0x76 F7 鍵0x77 F8 鍵0x78 F9 鍵0x79 F10 鍵0x7A F11 鍵0x7B F12 鍵0x7C F13 鍵0x7D F14 鍵0x7E F15 鍵0x7F F16 鍵

 

發送WIN+SAPCE鍵,WINDOWS,空格鍵

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.