Пример #1
0
        private void HandleKeyDown()
        {
            if (!string.IsNullOrEmpty(this.DisplayKey))
            {
                if (this.DisplayKey.ToUpper() == "C")
                {
                    IInputElement targetelement = Keyboard.FocusedElement;
                    if (targetelement != null)
                    {
                        if (targetelement as TextBox != null)
                        {
                            (targetelement as TextBox).Text = string.Empty;
                        }
                        else if (targetelement as PasswordBox != null)
                        {
                            (targetelement as PasswordBox).Password = string.Empty;
                        }
                    }
                    return;
                }

                for (int i = 0; i < this.DisplayKey.Length; i++)
                {
                    SoftKeyboardManager.PressSoftKey(this.DisplayKey[i] + "");
                }
            }
        }
 static void PressAKey(byte keycode)
 {
     //按键
     SoftKeyboardManager.keybd_event(keycode, 0x45, SoftKeyboardManager.KEYEVENTF_EXTENDEDKEY | 0, 0);
     //释放按键
     SoftKeyboardManager.keybd_event(keycode, 0x45, SoftKeyboardManager.KEYEVENTF_EXTENDEDKEY | SoftKeyboardManager.KEYEVENTF_KEYUP, 0);
 }
 /// <summary>
 /// 设置具有状态的键的状态
 /// </summary>
 /// <param name="key"></param>
 /// <param name="state"></param>
 public static void SetState(Key key, bool state)
 {
     if (state != SoftKeyboardManager.GetState(key))
     {
         byte vkey = (byte)KeyInterop.VirtualKeyFromKey(key);
         SoftKeyboardManager.keybd_event(vkey, 69, 1u, 0u);
         SoftKeyboardManager.keybd_event(vkey, 69, 3u, 0u);
     }
 }
        public static void PressSoftKey(string keystring)
        {
            Key key = KeyFromStringNumPadKeyboard(keystring);

            if (key != Key.None)
            {
                byte keyCode = unchecked ((byte)KeyInterop.VirtualKeyFromKey(key));
                SoftKeyboardManager.PressAKey(keyCode);
            }
        }
Пример #5
0
        /// <summary>
        /// 键抬起
        /// </summary>
        /// <param name="key"></param>
        /// <param name="states"></param>
        public void SoftKeyUp(Key key, KeyStates states)
        {
            switch (key)
            {
            case Key.ImeProcessed:
            case Key.CapsLock:
                this.IsCapsLock = SoftKeyboardManager.GetState(Key.CapsLock);
                break;

            case Key.LeftShift:
            case Key.RightShift:
                this.IsShiftPressed = false;
                break;
            }
        }
Пример #6
0
        void HandleKeyDown()
        {
            if (!string.IsNullOrEmpty(this.DisplayKey))
            {
                if (this.DisplayKey == "Shift" && this.ParentKeyboard != null)
                {
                    this.ParentKeyboard.IsShiftPressed = !this.ParentKeyboard.IsShiftPressed;
                    return;
                }

                if (this.ParentKeyboard == null)
                {
                    SoftKeyboardManager.PressSoftKey(this.DisplayKey, this.EffectiveKey, this.IsShiftPressed, this.IsCapsLock);
                }
                else
                {
                    SoftKeyboardManager.PressSoftKey(this.DisplayKey, this.EffectiveKey, this.ParentKeyboard.IsShiftPressed, this.ParentKeyboard.IsCapsLock);
                }
            }
        }
        public static void PressSoftKey(string keystring, EffectiveKey effectiveKey, bool isshiftpressed, bool iscapslock)
        {
            Key key = KeyFromStringFullKeyboard(keystring, effectiveKey, isshiftpressed, iscapslock);

            if (key != Key.None)
            {
                byte keyCode = unchecked ((byte)KeyInterop.VirtualKeyFromKey(key));

                //处理输入法切换,不同的系统不同的处理方式
                if (key == (Key.LeftShift | Key.LeftCtrl))
                {
                    SoftKeyboardManager.PressAKey(16);

                    ////win8-win10Shift
                    //if (OSVersionHelper.IsWindows8OrGreater)
                    //{
                    //        //16是Shift虚拟键值
                    //        SoftKeyboardManager.PressAKey(16);
                    //}
                    ////XP-win7 Shift+Ctrl
                    //else if (OSVersionHelper.IsWindowsXPOrGreater)
                    //{
                    //        byte keyCodectrl = unchecked((byte)KeyInterop.VirtualKeyFromKey(Key.LeftCtrl));
                    //        SoftKeyboardManager.PressDoubleKey(16, keyCodectrl);
                    //}
                }
                else
                {
                    if (!isshiftpressed)
                    {
                        SoftKeyboardManager.PressAKey(keyCode);
                    }
                    else
                    {
                        SoftKeyboardManager.PressDoubleKey(16, keyCode);
                    }
                }
            }
        }
Пример #8
0
 /// <summary>
 /// 刷新键
 /// 目前主要处理Caps、Shift等有状态的键
 /// </summary>
 public void RefreshSoftKeys()
 {
     this.IsCapsLock     = SoftKeyboardManager.GetState(Key.CapsLock);
     this.IsShiftPressed = (SoftKeyboardManager.GetState(Key.LeftShift) || SoftKeyboardManager.GetState(Key.RightShift));
 }
 /// <summary>
 /// 返回具有状态的键的状态
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public static bool GetState(Key key)
 {
     return(SoftKeyboardManager.GetKeyState(KeyInterop.VirtualKeyFromKey(key)) == 1);
 }