远程控制上的Windows媒体按钮不能在WPF中工作

时间:2011-08-01 14:23:59

标签: c# wpf windows-media-player

我有一个指向PC / TV的遥控器

键盘上的CTRL + P工作,并在应用程序中播放/暂停。

遥控器可以在Media Player中播放/暂停,但它在WPF应用程序中无效。

    public MainWindow()
    {
        InitializeComponent();
        ModifierKeys mk = ((ModifierKeys)(ModifierKeys.Control | ModifierKeys.Shift));
        MyPlayPause.InputGestures.Add(new KeyGesture(Key.P, ModifierKeys.Control));
        MyStop.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
        MyRewind.InputGestures.Add(new KeyGesture(Key.B,mk));
        MyFastForward.InputGestures.Add(new KeyGesture(Key.F,mk));
    }

我的XAML

<Window.CommandBindings>
    <CommandBinding Command="{x:Static  RemoteControlTest:MainWindow.MyPlayPause}" Executed="MyPlayPauseEvent"/>
    <CommandBinding Command="{x:Static RemoteControlTest:MainWindow.MyStop}" Executed="MyStopEvent"/>
    <CommandBinding Command="{x:Static RemoteControlTest:MainWindow.MyFastForward}" Executed="MyFastForwardEvent" />
    <CommandBinding Command="{x:Static RemoteControlTest:MainWindow.MyRewind}" Executed="MyRewindEvent" />
</Window.CommandBindings>

这些事件适用于倒带和快进,但不适用于播放/暂停和停止。

我尝试下载Media Glass http://mediaglass.codeplex.com/,当按CTRL + P

时,遥控器上出现同样的问题

我通过应用以下

发现了这一点
 System.Windows.Input.Key wpfLeftKey = Key.LeftCtrl;
 var formsKey = (Forms.Keys)KeyInterop.VirtualKeyFromKey(wpfLeftKey);

我从输出中得到不同的结果

 Windows 32 = LControlKey 
 WPF = LeftControl

我的想法是遥控器被编程为发出LControlKey

因此,当Win32应用程序记录LControlKey并强制触发事件时,我需要做的是引发一个事件。有什么建议。 (在InitiliseComponent()之后?

我可以在这里完成人迹罕至,或者可能是正确的。 ???

1 个答案:

答案 0 :(得分:1)

查看Key Bindings