发送WIN+SAPCE键,WINDOWS,空格键

键盘代码部份转自:http://www.cnblogs.com/cpcpc/archive/2011/02/22/2123055.html

由于喜欢用CTRL+空格键切换输入法,在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>
        /// 切换输入法
        /// </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+空格切换输入法
              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 BACKSPACE 键
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 键
时间: 2024-10-22 20:00:54

发送WIN+SAPCE键,WINDOWS,空格键的相关文章

使用SQL除掉文本中特殊的ascll字符比如Enter,Tab,空格键

一.在SQL查询的字段中如果包含tab.enter.空格键,可以使用ascii码进行替换: --替换了文本中含有tab键,Enter键,空格键的ascii码 select REPLACE(REPLACE(REPLACE(Fields,CHAR(9),''),CHAR(10),''),CHAR(13),'') from Table

windows虚拟键码表

16进制表示 大家应该都知道WM_KEYDOWN.WM_KEYUP.WM_SYSKEYDOWN和WM_SYSKEYUP消息中有个虚拟键码,以下是我自己对Windows虚拟键码的中文翻译(不保证准确率),大家可以参考一下,英文可以看这里:http://msdn.microsoft.com/zh-cn/office/ms645540 // VK_LBUTTON           0x01       鼠标左键(控制台不使用) // VK_RBUTTON           0x02       鼠

web: 屏蔽button元素的空格键和enter响应

用tab键可以在各种元素之间切换焦点,然后键盘上的空格和enter按键触发click事件,我这里不想要这种效果. 所以我需要屏蔽这两个按键. function keyup(e) { var currKey = 0; e = e || event; currKey=e.keyCode||e.which||e.charCode;//支持IE.FF if (currKey == 32) { //空格键 eventChangeMode(); //用这个按键做一些其他事 //屏蔽传递 e.preventD

2017.4.17 定制Eclipse的Content assist(代码补全),比如空格键 &quot;=&quot;键不上屏

Eclipse具有代码提示功能, 但是默认的提示只有在输入"."时才会提示, 我们希望Eclipse可以像Visual Studio那样, 输入任何字母都可以自动提示, 按照如下方式进行修改即可: 1. "window"→"Preferences" 2. 选择"Java",展开,"Editor",选择"Content Assist". 3. 选择"Content Assist&

C语言 统计一串字符中空格键、Tab键、回车键、字母、数字及其他字符的个数(Ctrl+Z终止输入)

//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1 #include<stdio.h> 2 3 void main(){ 4 int c, letter=0, num=0, blank=0, tab=0, enter=0, other=0 ,i=0, sum=0; 5 printf("Please input a string:\n"); 6 while((c=getchar())!=EOF){ 7 sum++; 8 if(c=

QuickLook 空格键预览文件工具

QuickLook 支持预览的文件格式 从上面的截图可以看到,QuickLook 可以支持预览的文件格式很丰富,常见的文件都能显示,而且效果很好!音视频播放器简单实用.代码支持高亮显示.Markdown 可以显示最终效果等等.下面是 QuickLook 支持的格式: 图片:.png, .jpg, .bmp, .gif, .psd, .apng,RAW: 压缩包:.zip, .rar, .tar.gz, .7z: 文档:.pdf, .txt, .html, .htm, .md, .markdown

javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)

这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放).检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供javascript的方法来检测浏览器的缩放.对于 IE6,就直接无视了,因为 IE6 只能对文本进行缩放.先来说说浏览器提供的标准检测接口,window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,该属性就可以用于检测网页是否被缩放了.在普通的 PC 浏览器上,在默认无缩放的情

Android下拦截、监听返回键和home键

主要还是说返回键把,home键如果处理比较流氓,而且Android也不想我们去处理. 第一种(如果手机也有其他的各种物理键都可以在这个方法里面处理): 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 if (keyCode==KeyEvent.KEYCODE_BACK){ 4 backToRoarMain(); 5 return false; 6 } 7 8 return super.onKeyDow

SQL数据库中的主键与外键的介绍

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的