using System; using System.IO; namespace GridProxyGUI { public static class PlatformDetection { public readonly static bool IsWindows; public readonly static bool IsMac; static PlatformDetection () { IsWindows = Path.DirectorySeparatorChar == '\\'; IsMac = !IsWindows && IsRunningOnMac(); } //From Managed.Windows.Forms/XplatUI static bool IsRunningOnMac () { IntPtr buf = IntPtr.Zero; try { buf = System.Runtime.InteropServices.Marshal.AllocHGlobal (8192); // This is a hacktastic way of getting sysname from uname () if (uname (buf) == 0) { string os = System.Runtime.InteropServices.Marshal.PtrToStringAnsi (buf); if (os == "Darwin") return true; } } catch { } finally { if (buf != IntPtr.Zero) System.Runtime.InteropServices.Marshal.FreeHGlobal (buf); } return false; } [System.Runtime.InteropServices.DllImport ("libc")] static extern int uname (IntPtr buf); } }