zoukankan      html  css  js  c++  java
  • 获取哪些键正在被按下

    [DllImport("user32.dll", EntryPoint = "keybd_event")]
            private static extern void keybd_event(
                byte bVk,    //虚拟键值
                byte bScan,// 一般为0
                int dwFlags,  //这里是整数类型  0 为按下,2为释放
                int dwExtraInfo  //这里是整数类型 一般情况下设成为 0
            );
    
            [DllImport("user32.dll", EntryPoint = "GetKeyboardState", SetLastError = true)]
            private static extern bool NativeGetKeyboardState([Out] byte[] keyStates);
    
            public static byte GetVirtualKeyCode(Keys key)
            {
                int value = (int)key;
                return (byte)(value & 0xFF);
            }
    
            private static List<string> GetAllPressedKey()
            {
                var array = new byte[256];
                NativeGetKeyboardState(array);
    
                var keyNames = Enum.GetNames(typeof(Keys)).ToList();
                var keysList = new List<string>();
                foreach (var keyName in keyNames)
                {
                    var key = (Keys)Enum.Parse(typeof(Keys), keyName);
                    var code = GetVirtualKeyCode(key);
                    if ((array[code] & 0x80) != 0)
                    {
                        keysList.Add(keyName);
                    }
                }
    
                return keysList;
            }
    
            private static bool CheckAnyKeyPressedAndRelease()
            {
                var array = new byte[256];
                NativeGetKeyboardState(array);
    
                var keyNames = Enum.GetNames(typeof(Keys)).ToList();
                var keysList = new List<string>();
                foreach (var keyName in keyNames)
                {
                    var key = (Keys)Enum.Parse(typeof(Keys), keyName);
                    keybd_event((byte)key, 0, 2, 0);
                }
                return keysList.Count > 0;
            }
  • 相关阅读:
    sun.misc.Unsafe的理解
    线程同步工具类
    HashMap源码分析
    【设计模式】GoF设计模式学习总结
    基于ARM处理器的反汇编器软件简单设计及实现
    HashMap内存泄露
    基于Spring cloud Ribbon和Eureka实现客户端负载均衡
    ReentrantLock
    数据库自增主键
    排序
  • 原文地址:https://www.cnblogs.com/nanfei/p/10921428.html
Copyright © 2011-2022 走看看