UAP拦截Alt+F4

Intercepting Alt+F4 in UAP

我正在编写一个 UAP C#/XAML 应用程序,暂时我对用户在桌面环境中运行我的应用程序的情况感兴趣(当键盘和鼠标可用时,机器是运行 Windows 10 的某些版本不是 Windows 10 移动版)。

我想拦截 ALT+F4 以便在用户退出之前询问一些重要问题,例如在记事本中 - 当您有未保存的文件并且记事本会通知您这一事实并询问您是否要保存您的工作、退出而不保存或返回处理您的文件。

在 Windows 10 UAP 中是否可能出现这种行为?我尝试使用 Application.Suspending 事件和 ExtendedExecutionSession,但似乎在触发此事件之前 GUI 线程已死,我在此事件的处理程序中所能做的就是不需要用户交互的操作。

没有办法拦截和阻止这样的事件。

当您的应用被告知它在关闭事件(alt+f4,交叉单击)后暂停时,您有 10 秒(在桌面上)在完全终止之前清理并保存状态。

对于通用应用程序,您不需要询问他们是否保存的对话框,只需保存状态,这样下次他们重新打开时您可以将视图刷新到之前的状态,或者想想邮件客户端,保存他们的输入作为草稿。但是,Microsoft 的指导是,如果用户关闭您的应用程序,假设他们希望您离开,所以不要恢复状态。

对于一些额外的处理,您唯一可以做的就是请求 OS 延长执行时间,尽管这不能保证,即使被授予也可以在 1s 通知终止的情况下被撤销。重要的是要注意,即使授予了扩展执行权限,您的应用程序也不允许任何 UI.

有关 Windows 10 通用应用程序生命周期的更多信息,我建议观看 Microsoft Virtual Academy 上的 Application Lifecycle session。