c# - sendkeys 以外




WPFアプリケーションのSendKeys.Sendメソッド (2)

SendKeysはSystem.Windows.Forms名前空間の一部であり、Wpfにはこれに相当するメソッドはありません。 WPFでSendKeys.Sendを使用することはできませんが、System.Windows.Formsをプロジェクト参照に追加すれば、 SendKeys.SendWaitメソッドを使用できます。 あなたの唯一の他のオプションはSendInputをPInvokeすることSendInput

これらの方法は両方とも現在アクティブなウィンドウにデータを送信することに注意してください。

ブラウザ制御のためにキーストローク(Ctrl + T)を送信しようとしています。 しかし、 SendKeys.Send()はWPFアプリケーションでエラーを示しました。 私の質問は

1)WPFアプリケーションでこの方法を使用できますか?

2)自動キーストロークの送信に代わる方法はありますか。

ありがとう。


InputManager使い方を説明したブログ記事を見つけました。 それはあなたが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
    }
  }
}




wpf