我想创建一个可供我女儿使用的Windows桌面应用程序。用例是我给她一个键盘,我启动这个应用程序,以便她可以按任何她想要的键。应用程序可以显示某些内容(例如,按下的大字母或图片等),并阻止我的女儿从我的电脑上删除/修改内容。如何将重点放在WPF桌面应用程序上?
我有一些特殊的键处理困难。我可以通过以下技术禁用ALT + F4,但我无法通过这种方式控制ALT + TAB和Win键。
public MainWindow()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(OnButtonKeyDown);
}
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Alt && e.SystemKey == Key.F4)
{
e.Handled = true;
}
else
{
base.OnPreviewKeyDown(e);
}
}
我发现an article它禁用这些功能,当应用程序是活动的,但我认为这对于非预期的应用程序退出相当脆弱。
我最终做的是一种解决方法,但不会感觉太专业。
public MainWindow()
{
InitializeComponent();
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += OnTimerTick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100);
dispatcherTimer.Start();
}
private void OnTimerTick(object sender, EventArgs e)
{
this.Activate();
this.Focus();
}
正如你可以看到我创建了一个定时器,使焦点回到不时。这样,如果按下Win Key或ALT + TAB,它将使应用程序恢复。
如何以专业的方式将注意力集中在我的应用程序上?我正在考虑一个解决方案,该解决方案可以检测应用程序何时失去焦点(出于任何原因)并将焦点设置回来。
关闭我的头顶,我认为有可能实现的“OnFocusLost”。不知道它是否适用于所有WIn-key和东西。 –
为什么不只是创建另一个用户,它拥有的只是这个程序,而其他所有内容都被锁定了?然后你只需切换用户,当你想回来时,切换用户(并输入你的密码) –