我正在构建UWP应用程序,并且希望禁用键盘与应用程序的交互。这意味着按下键盘上的任何键时,我的应用程序均不应以任何方式响应。
这可以实现吗?我可以选择性地禁用与某些键(例如Tab键等)的交互。
答案 0 :(得分:2)
是的,您可以使用KeyboardDeliveryInterceptor类。需要注意的几件事:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="inputForegroundObservation"/>
</Capabilities>
KeyboardDeliveryInterceptor interceptor = KeyboardDeliveryInterceptor.GetForCurrentView();
interceptor.IsInterceptionEnabledWhenInForeground = true;
interceptor.KeyUp += delegate(KeyboardDeliveryInterceptor sender, KeyEventArgs args)
{
if (args.VirtualKey == Windows.System.VirtualKey.Tab)
{
// perform desired tab key action
}
};
答案 1 :(得分:0)
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="inputForegroundObservation"/>
</Capabilities>
添加权限,如Stefan上文所述。添加权限后,添加以下代码。
Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated;
private void Dispatcher_AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if(args.key == Windows.System.VirtualKey.Tab)
{
args.Handled = true;
}
}
上面的代码阻止Tab键执行任何操作。因此,当用户按下Tab键时,将不会执行任何操作。