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); }