/[NexusPowerControl]/trunk/NexusPowerCommand/win32api.cs
ViewVC logotype

Diff of /trunk/NexusPowerCommand/win32api.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- trunk/NexusPowerCommand/win32api.cs	2011/10/25 07:59:36	28
+++ trunk/NexusPowerCommand/win32api.cs	2011/10/25 08:11:08	29
@@ -11,10 +11,82 @@
         #region win32api defined
         [DllImport("user32.dll")]
         private static extern bool LockWorkStation();
+        [DllImport("user32.dll")]
+        static extern bool ExitWindowsEx(uint uFlags, uint dwReason);
         #endregion
 
+        #region win32api enums
+        private class enums
+        {
+            [Flags]
+            internal enum ExitWindows : uint
+            {
+                // ONE of the following five:
+                LogOff = 0x00,
+                ShutDown = 0x01,
+                Reboot = 0x02,
+                PowerOff = 0x08,
+                RestartApps = 0x40,
+                // plus AT MOST ONE of the following two:
+                Force = 0x04,
+                ForceIfHung = 0x10,
+            }
+
+            [Flags]
+            internal enum ShutdownReason : uint
+            {
+                MajorApplication = 0x00040000,
+                MajorHardware = 0x00010000,
+                MajorLegacyApi = 0x00070000,
+                MajorOperatingSystem = 0x00020000,
+                MajorOther = 0x00000000,
+                MajorPower = 0x00060000,
+                MajorSoftware = 0x00030000,
+                MajorSystem = 0x00050000,
+
+                MinorBlueScreen = 0x0000000F,
+                MinorCordUnplugged = 0x0000000b,
+                MinorDisk = 0x00000007,
+                MinorEnvironment = 0x0000000c,
+                MinorHardwareDriver = 0x0000000d,
+                MinorHotfix = 0x00000011,
+                MinorHung = 0x00000005,
+                MinorInstallation = 0x00000002,
+                MinorMaintenance = 0x00000001,
+                MinorMMC = 0x00000019,
+                MinorNetworkConnectivity = 0x00000014,
+                MinorNetworkCard = 0x00000009,
+                MinorOther = 0x00000000,
+                MinorOtherDriver = 0x0000000e,
+                MinorPowerSupply = 0x0000000a,
+                MinorProcessor = 0x00000008,
+                MinorReconfig = 0x00000004,
+                MinorSecurity = 0x00000013,
+                MinorSecurityFix = 0x00000012,
+                MinorSecurityFixUninstall = 0x00000018,
+                MinorServicePack = 0x00000010,
+                MinorServicePackUninstall = 0x00000016,
+                MinorTermSrv = 0x00000020,
+                MinorUnstable = 0x00000006,
+                MinorUpgrade = 0x00000003,
+                MinorWMI = 0x00000015,
+
+                FlagUserDefined = 0x40000000,
+                FlagPlanned = 0x80000000
+            }
+        }
+        #endregion
+
+
         #region win32api wrappers
+
+
+        public static bool Shutdown() { return win32api.ExitWindowsEx((uint)win32api.enums.ExitWindows.ShutDown, (uint)(win32api.enums.ShutdownReason.MajorOther | win32api.enums.ShutdownReason.MinorOther)); }
+        public static bool Restart() { return win32api.ExitWindowsEx((uint)win32api.enums.ExitWindows.Reboot, (uint)(win32api.enums.ShutdownReason.MajorOther | win32api.enums.ShutdownReason.MinorOther)); }
+        
+        public static bool LogOff() { return win32api.ExitWindowsEx((uint)win32api.enums.ExitWindows.LogOff, (uint)(win32api.enums.ShutdownReason.MajorOther | win32api.enums.ShutdownReason.MinorOther)); }
         public static bool LockScreen() { return win32api.LockWorkStation(); }
+        public static bool Sleep() { return false; }
         #endregion
     }
 }

 

  ViewVC Help
Powered by ViewVC 1.1.22