我想创建一个可供我女儿使用的Windows桌面应用程序.用例是我给她一个键盘,我启动这个应用程序,这样她就可以按任何她想要的键.应用程序可以显示某些内容(例如,大字或图片中按下的字母等)并阻止我的女儿从我/我的计算机上删除/修改内容.
我对特殊键处理有些困难.我可以使用以下技术禁用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);
}
}
Run Code Online (Sandbox Code Playgroud)
我发现一篇文章在应用程序处于活动状态时禁用了这些功能,但我认为对于非预期的应用程序退出来说它非常脆弱.
我最终做的是一种有效的解决方法,但感觉不太专业.
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();
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我创建了一个定时器,可以不时地调整焦点.这样,如果按下Win键或ALT + TAB,它将带回应用程序.
如何以更专业的方式关注我的应用程序?我正在考虑一种解决方案,它可以检测应用程序何时失去焦点(出于任何原因)并将焦点设置回来.
使用该Window.Deactivated事件并重新激活它以实现您想要的:
this.Deactivated += (s, e) => this.Activate();
Run Code Online (Sandbox Code Playgroud)
您还希望使应用程序全屏显示,并在应用程序内创建一个隐藏的快捷键。按此键后,系统会提示您输入密码,然后您可以关闭该应用程序。否则,关闭应用程序也会很麻烦。
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |