我有一个指向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()之后?
我可以在这里完成人迹罕至,或者可能是正确的。 ???