SendKeys.Send Method in WPF application

前端 未结 2 747
独厮守ぢ
独厮守ぢ 2020-12-06 00:05

I\'m trying to send Keystroke(Ctrl+T) for browser control. But, SendKeys.Send() showed error in WPF application?? My question is

1) Can I use this metho

相关标签:
2条回答
  • 2020-12-06 01:07

    I found a blog post describing use of InputManager. It allows you to simulate keyboard events in WPF.

    /// <summary>
    ///   Sends the specified key.
    /// </summary>
    /// <param name="key">The key.</param>
    public static void Send(Key key)
    {
      if (Keyboard.PrimaryDevice != null)
      {
        if (Keyboard.PrimaryDevice.ActiveSource != null)
        {
          var e = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, key) 
          {
              RoutedEvent = Keyboard.KeyDownEvent
          };
          InputManager.Current.ProcessInput(e);
    
          // Note: Based on your requirements you may also need to fire events for:
          // RoutedEvent = Keyboard.PreviewKeyDownEvent
          // RoutedEvent = Keyboard.KeyUpEvent
          // RoutedEvent = Keyboard.PreviewKeyUpEvent
        }
      }
    }
    
    0 讨论(0)
  • 2020-12-06 01:08

    SendKeys is part of the System.Windows.Forms Namespace there is not an equivalent method in Wpf. You can not use the SendKeys.Send with WPF but you can use the SendKeys.SendWait method, if you add System.Windows.Forms to your project references. Your only other option would be to to PInvoke SendInput.

    Be aware that both of these methods send data to the currently active window.

    0 讨论(0)
提交回复
热议问题