Files
2dust_v2rayN/v2rayN/v2rayN.Desktop/Common/MacAppUtils.cs
T
JieXuand2dust 34359885ab Update AppBuilderExtension.cs (#9514)
* Update AppBuilderExtension.cs

* Update MainWindow.axaml.cs

* Update MacAppUtils.cs

* Update App.axaml.cs

* Add regions for MacOS activation and app events

---------

Co-authored-by: 2dust <31833384+2dust@users.noreply.github.com>
2026-06-09 17:00:51 +08:00

36 lines
1.3 KiB
C#

using System.Runtime.InteropServices;
namespace v2rayN.Desktop.Common;
internal static class MacAppUtils
{
private const string LibObjC = "/usr/lib/libobjc.dylib";
private const nint ActivationPolicyAccessory = 1;
public static void SetActivationPolicyAccessory()
=> objc_msgSend(
objc_msgSend(objc_getClass("NSApplication"), sel_registerName("sharedApplication")),
sel_registerName("setActivationPolicy:"),
ActivationPolicyAccessory);
public static bool IsWindowMiniaturized(Window window)
=> window.TryGetPlatformHandle() is IMacOSTopLevelPlatformHandle { NSWindow: not 0 } handle
&& objc_msgSend_bool(handle.NSWindow, sel_registerName("isMiniaturized"));
[DllImport(LibObjC)]
private static extern nint objc_getClass(string name);
[DllImport(LibObjC)]
private static extern nint sel_registerName(string name);
[DllImport(LibObjC, EntryPoint = "objc_msgSend")]
private static extern nint objc_msgSend(nint receiver, nint selector);
[DllImport(LibObjC, EntryPoint = "objc_msgSend")]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool objc_msgSend_bool(nint receiver, nint selector);
[DllImport(LibObjC, EntryPoint = "objc_msgSend")]
private static extern void objc_msgSend(nint receiver, nint selector, nint argument);
}