using System.Runtime.InteropServices;
namespace CursorLang.Interop;
///
/// Право выводить окно на передний план.
///
internal static class ForegroundPermissionNative
{
/// ASFW_ANY — право получает любой процесс.
private const uint AnyProcess = 0xFFFFFFFF;
///
/// Уступает своё право вывести окно на передний план другим процессам.
///
///
/// Поменять окно переднего плана Windows разрешает не всякому: нужно быть
/// процессом, с которым пользователь работал последним. Давно запущенный
/// экземпляр приложения к таким не относится, и его окно всплывёт только
/// если правом поделится процесс, который пользователь запустил только что.
///
internal static void GrantToAnyProcess() => AllowSetForegroundWindow(AnyProcess);
[DllImport("user32.dll")]
private static extern bool AllowSetForegroundWindow(uint dwProcessId);
}