Как использовать нажатия клавиш мультимедиа и изменения громкости в приложении 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 воспроизводит/приостанавливает воспроизведение при нажатии кнопки воспроизведения, а громкость системы увеличивается или уменьшается при повороте ручки.
Как использовать эти события, чтобы на них реагировало только мое приложение, но не остальная часть системы?