using System.Runtime.InteropServices; namespace MediaBrowser.ServerApplication.Native { /// /// Class NativeApp /// public static class NativeApp { /// /// Shutdowns this instance. /// public static void Shutdown() { MainStartup.Shutdown(); } /// /// Restarts this instance. /// public static void Restart() { MainStartup.Restart(); } /// /// Determines whether this instance [can self restart]. /// /// true if this instance [can self restart]; otherwise, false. public static bool CanSelfRestart { get { return MainStartup.CanSelfRestart; } } /// /// Gets a value indicating whether [supports automatic run at startup]. /// /// true if [supports automatic run at startup]; otherwise, false. public static bool SupportsAutoRunAtStartup { get { return true; } } /// /// Gets a value indicating whether this instance can self update. /// /// true if this instance can self update; otherwise, false. public static bool CanSelfUpdate { get { return MainStartup.CanSelfUpdate; } } public static void PreventSystemStandby() { SystemHelper.ResetStandbyTimer(); } internal enum EXECUTION_STATE : uint { ES_NONE = 0, ES_SYSTEM_REQUIRED = 0x00000001, ES_DISPLAY_REQUIRED = 0x00000002, ES_USER_PRESENT = 0x00000004, ES_AWAYMODE_REQUIRED = 0x00000040, ES_CONTINUOUS = 0x80000000 } public class SystemHelper { [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags); public static void ResetStandbyTimer() { EXECUTION_STATE es = SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED); } } } }