C# 禁用与UWP应用程序的键盘交互
我正在构建一个UWP应用程序,我希望禁用与我的应用程序的键盘交互。这意味着当按下键盘上的任何键时,我的应用程序都不应该以任何方式响应 这是可以实现的吗?我是否可以有选择地禁用与某些键的交互,如Tab键等。是的,您可以为此使用该类。以下几点需要注意:C# 禁用与UWP应用程序的键盘交互,c#,uwp,windows-10,win-universal-app,windows-10-universal,C#,Uwp,Windows 10,Win Universal App,Windows 10 Universal,我正在构建一个UWP应用程序,我希望禁用与我的应用程序的键盘交互。这意味着当按下键盘上的任何键时,我的应用程序都不应该以任何方式响应 这是可以实现的吗?我是否可以有选择地禁用与某些键的交互,如Tab键等。是的,您可以为此使用该类。以下几点需要注意: 您需要在appxmanifest文件中声明受限功能“inputForegroundObservation”: 您不能选择性地截取键,但您可以响应代码中的特定截取键,并使用所需的操作进行响应(例如,按下tab键时移动焦点): KeyboardDel
KeyboardDeliveryInterceptor interceptor=KeyboardDeliveryInterceptor.GetForCurrentView();
interceptor.isInterceptionEnabledWhenInformaleGround=true;
interceptor.KeyUp+=委托(KeyboardDeliveryInterceptor发送方,KeyEventArgs args args)
{
if(args.VirtualKey==Windows.System.VirtualKey.Tab)
{
//执行所需的选项卡键操作
}
};
上述代码阻止Tab按钮执行任何操作。因此,当用户按下Tab键时,不会执行任何操作。我的用例是禁用键盘与Tab键的交互,并正常处理其余键的输入。因此,如果我以您提到的方式使用KeyboardDeliveryInterceptor类截取所有键,我可以通过编程告诉我的应用程序正常处理来自所有其他键的输入。
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="inputForegroundObservation"/>
</Capabilities>
Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;
private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if(args.key == Windows.System.VirtualKey.Tab)
{
args.Handled = true;
}
}