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); } }
/// <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; } }
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); } } } }
/// <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); }