Как определить сворачивание окна в Windows?

Ребят помогите, не могу найти

Как определить сворачивание или разворачивание окна в Windows?

Хочу, чтобы, если файлик сохранения перекидывали в папку там, то надо его подхватить, а для этого надо чекнуть когда окно свернулось и потом проверить...

Пс: немного не так сформулировал, как задетектить когда фокус на окне приложения пропадает или снова появляется?


Ответы (1 шт):

Автор решения: STmihan

У MonoBehavior есть метод OnApplicationFocus(bool). Можешь сделать синглтон и запихнуть в него такой код.

public class FocusChecker : MonoBehaviour
{
    private static FocusChecker _instance;
    public static bool IsFocused {get; private set;} = false;
    public static Action<bool> OnFocusChange;

    private void Awake()
    {
        if (_instance == this)
        {
            Destroy(gameObject);
            return;
        }
        _instance = this;
        DontDestroyOnLoad(gameObject);
    }

    private void OnApplicationFocus(bool hasFocus)
    {
        IsFocused = hasFocus;
        OnFocusChange?.Invoke(hasFocus);
    }
}

И потом просто обращаться к полю PauseChecker.IsPaused, если нужно узнать состояние, или к экшену OnFocusChange, если нужно поймать ивент

→ Ссылка