我有一个要求,我只想在电子应用程序处于前台时才在其中执行操作。
它是电子反应的应用。在安装组件时,我想安排一个定期任务,该任务仅在应用程序处于焦点或被用户使用时运行。并在应用程序进入后台时暂停任务。
我们如何检测电子应用程序处于前台?
答案 0 :(得分:1)
您可以在BrowserWindow上使用focus / blur事件,以在应用程序集中/不集中时得到通知。
mainWindow = new BrowserWindow({})
mainWindow.on('focus', () => {
console.log('window got focus')
})
mainWindow.on('blur', () => {
console.log('window blur')
})
您可能想在这些事件处理程序中更新组件的状态,或使用任何其他方法来跟踪当前的焦点状态。
这假设您有一个应用程序窗口。如果有多个,则需要将检查范围扩大到所有窗口。
答案 1 :(得分:0)
您可以使用isFocused
method from BrowserWindow
。要获得自己的BrowserWindow,可以执行以下操作:
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var request = bindingContext.HttpContext.Request;
using (var reader = new StreamReader(request.Body, Encoding.UTF8))
{
var bodyString = reader.ReadToEnd();
var person = bodyString.DeSerialize<Person>(); //this is custom logic to de-serialize to object from JSON string
//write your model binding logic here...
bindingContext.Result = ModelBindingResult.Success(person);
}
return Task.CompletedTask;
}
这将返回您所有应用程序的窗口。因此,要获得第一个/主窗口,您可以像这样解构数组:
remote.BrowserWindow.getAllWindows();