UWP:检测应用程序获得/失去焦点只想在应用程序处于活动状态时执行此操作。如果用户切换到另一个窗口/应用程序,那么我想做个好公民并再次允许屏幕保护程序。我看不到一种明显的方法来检测UWP应用程序何时获得/失去焦点(或被激活/停用)并且快速搜索不会产生任何见解。谁能指出我正确的方向?您不应处理应用程序激活状态更改。请参阅如何防止UWP应用中的屏幕锁定。自动请求处理然而,无需任何额外编码,当您的应用程序不再具有焦点时,您的RequestActive()调用也将被停用-换句话说,当您的应用程序进入暂停状态时。在WindowsPhone移动设备和Windows10PC或平板电脑模式下的SurfacePro上,“您的应用程序不再具有焦点”意味着一旦您的应用程序不再位于前台(顺便说一句,snap应用程序仍然算作接收)。但是,在桌面模式下的Windows10PC上,只要您的应用程序被最小化,它就意味着它。在桌面模式下,请注意UWP应用程序生命周期仍然认为您的应用程序在前台运行,即使另一个应用程序窗口正在占用您的应用程序窗口。真正酷的是,当您的应用返回前台或去最小化时,RequestActive()调用将自动重新激活。你什么都不用做!这也意味着,如果另一个应用程序请求保持显示处于活动状态,它就无法劫持同一设备上所有其他应用程序的行为。只要用户正在使用该应用程序,该请求就没问题。一旦应用程序被关闭或最小化,Windows10就会恢复其常规的省电习惯,即使该应用程序忘记调用RequestRelease()也是如此。最后,当您的应用程序终止时,任何剩余的显示活动请求都会自动清除。这一切都是为了满足您的需求。其实很简单:Window.Current.Activated+=Current_Activated;privatevoidCurrent_Activated(objectsender,Windows.UI.Core.WindowActivatedEventArgse){if(e.WindowActivationState==CoreWindowActivationState.Deactivated){//做事}else{//做不同的事}}我们可以使用CoreWindow.Activated检测UWP应用程序何时激活或停用的事件。当窗口完成激活或停用时,将触发此方法。对于UWP应用程序,我们通常只有一个窗口。所以我们可以在Application.OnLaunched方法中添加如下代码来检测:已停用){System.Diagnostics.Debug.WriteLine(“已停用”+DateTime.Now);}else{System.Diagnostics.Debug.WriteLine("Activated"+DateTime.Now);}};否则,您也可以使用CoreApplication.GetCurrentView方法或CoreWindow.GetForCurrentThread方法来获取一个CoreWindow。我在主窗口上使用可见性更改事件。在应用程序中打开或关闭新窗口时不会触发该事件。以上是C#学习教程:UWP:Detectingtheentirecontentoftheappgaining/losingfocussharing。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——Window.Current.VisibilityChanged+=OnVisibilityChanged;/////当窗口可见性改变时,事情发生了//////objectsender///VisibilityChangedEventArgseprivatevoidOnVisibilityChanged(objectsender,VisibilityChangedEventArgse){if(!e.Visible){//dostuff}else{//dootherstuff}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
