added a ban on running a second instance of the application.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user