Как использовать нажатия клавиш мультимедиа и изменения громкости в приложении WPF?

У меня есть приложение WPF, которое должно реагировать на клавиши мультимедиа и ручку громкости, которую я подключил к компьютеру.

Это было просто с помощью команд WPF:

MainWindow.xaml:

      <CommandBinding Command="local:Commands.VolUp" CanExecute="VolUpCommand_CanExecute" Executed="VolUpCommand_Executed" />
<CommandBinding Command="local:Commands.Play" CanExecute="PlayCommand_CanExecute" Executed="PlayCommand_Executed" />

Команды.cs:

      public static readonly RoutedUICommand VolUp = new RoutedUICommand
(
  "VolUp",
  "VolUp",
  typeof(Commands),
  new InputGestureCollection()
  {
    new KeyGesture(Key.VolumeUp)
  }
);
public static readonly RoutedUICommand Play = new RoutedUICommand
(
  "Play",
  "Play",
  typeof(Commands),
  new InputGestureCollection()
  {
    new KeyGesture(Key.MediaPlayPause)
  }
);

MainWindow.xaml.cs:

      private void VolUpCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
  e.CanExecute = true;
}
private void VolUpCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
  MessageBox.Show("Volume up");
  e.Handled = true;
}
private void PlayCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
  e.CanExecute = true;
}
private void PlayCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
  MessageBox.Show("Play");
  e.Handled = true;
}

Это работает (отображаются окна сообщений), но проблема в том, что остальная часть системы по-прежнему реагирует на кнопки — Spotify воспроизводит/приостанавливает воспроизведение при нажатии кнопки воспроизведения, а громкость системы увеличивается или уменьшается при повороте ручки.

Как использовать эти события, чтобы на них реагировало только мое приложение, но не остальная часть системы?

0 ответов

Другие вопросы по тегам