Files
cursor-lang/CursorLang/Interop/ForegroundPermissionNative.cs
T

27 lines
1.3 KiB
C#

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